js学习day1



<!DOCTYPE html>
<html>
 <head>
  <meta charset="UTF-8">
  <title></title>


  <!--script标签之中还有几个属性 
                              例如
                       	   可选)    src
                             异步脚本    async   表示立即下载文本 执行顺序不一定按照指定的先后顺序执行
                                    charset
                             延迟脚本       defer  延迟文本加载
                           已废弃)  language  用于编码的脚本语言
                            必选) 	 type


同时script脚本的插入位置不一定要在head里面,插入在body里面的时候浏览器解析页面会一步步解析,可以直观上给用户更好的体验,而不是一开始就是空白页面
                              -->


  <!--JS代码需要编写到script标签中-->
  <script type="text/javascript">
   
   /*
    * 控制浏览器弹出一个警告框
    * alert("哥,你真帅啊!!");
    */
   
   /*
    * 让计算机在页面中输出一个内容
    * document.write()可以向body中输出一个内容
    * document.write("看我出不出来~~~");
    */
   
   /*
    * 向控制台输出一个内容
    * console.log()的作用是向控制台输出一个内容
    * console.log("你猜我在哪出来呢?");
    */
   
   alert("哥,你真帅啊!!");
   document.write("看我出不出来~~~");
   
   console.log("你猜我在哪出来呢?");
   
   
   
   
  </script>
 </head>
 <body>
 </body>
</html>




<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		
		<!--
			可以将js代码编写到外部js文件中,然后通过script标签引入
			写到外部文件中可以在不同的页面中同时引用,也可以利用到浏览器的缓存机制
			推荐使用的方式
		-->
		<!--
			script标签一旦用于引入外部文件了,就不能在编写代码了,即使编写了浏览器也会忽略
			如果需要则可以在创建一个新的script标签用于编写内部代码
		-->
		<script type="text/javascript" src="js/script.js"></script>
		<script type="text/javascript">
			alert("我是内部的JS代码");
		</script>
		
		<!--
			可以将js代码编写到script标签	
		<script type="text/javascript">
			
			alert("我是script标签中的代码!!");
			
		</script>
		-->
	</head>
	<body>
		
		<!--
			可以将js代码编写到标签的onclick属性中
			当我们点击按钮时,js代码才会执行
			
			虽然可以写在标签的属性中,但是他们属于结构与行为耦合,不方便维护,不推荐使用
		-->
		<button οnclick="alert('讨厌,你点我干嘛~~');">点我一下</button>
		
		<!--
			可以将js代码写在超链接的href属性中,这样当点击超链接时,会执行js代码
		-->
		<a href="javascript:alert('让你点你就点!!');">你也点我一下</a>
		<a href="javascript:;">你也点我一下</a>
		
	</body>
</html>




 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			
			/*
			 	多行注释
			 	JS注释
			 	多行注释,注释中的内容不会被执行,但是可以在源代码中查看
			 		要养成良好的编写注释的习惯,也可以通过注释来对代码进行一些简单的调试
			 */
			
			//单行注释
			//alert("hello");
			//document.write("hello");
			console.log("hello"); //该语句用来在控制台输出一个日志
			
			/*
			 * 1.JS中严格区分大小写
			 * 2.JS中每一条语句以分号(;)结尾
			 * 		- 如果不写分号,浏览器会自动添加,但是会消耗一些系统资源,
			 * 			而且有些时候,浏览器会加错分号,所以在开发中分号必须写
			 * 3.JS中会忽略多个空格和换行,所以我们可以利用空格和换行对代码进行格式化
			 * 
			 */
			
			alert("hello");
							
							
			
		</script>
	</head>
	<body>
		
	</body>
</html>





<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			
			/*
			 * 字面量,都是一些不可改变的值
			 * 		比如 :1 2 3 4 5 
			 * 		字面量都是可以直接使用,但是我们一般都不会直接使用字面量
			 * 
			 * 变量    变量可以用来保存字面量,而且变量的值是可以任意改变的
			 * 		变量更加方便我们使用,所以在开发中都是通过变量去保存一个字面量,
			 * 		而很少直接使用字面量
			 * 		可以通过变量对字面量进行描述
			 */
			
			//声明变量
			//在js中使用var关键字来声明一个变量(ES5)
//在es6里面就开始推荐let的关键字来声明
//两者有着一定的区别,详情请见下面










              在非严格模式(non-strict mode)下的var 或者函数声明时
              通过var声明的变量或者非严格模式下(non-strict mode)创建的函数声明没有块级作用域。在语句块里声明的变量的作用域不仅是其所在的函数或者 script 标签内,所设置变量的影响会在超出语句块本身之外持续存在。 换句话说,这种语句块不会引入一个作用域。尽管单独的语句块是合法的语句,但在JavaScript中你不会想使用单独的语句块,因为它们不像你想象的C或Java中的语句块那样处理事物。例如:

              var x = 1;
              {
                var x = 2;
              }
              console.log(x); // 输出 2
              输出结果是 2,因为块中的 var x语句与块前面的var x语句作用域相同。在 C 或 Java中,这段代码会输出 1。

              使用let和 const
              相比之下,使用 let和const声明的变量是有块级作用域的。

              let x = 1;
              {
                let x = 2;
              }
              console.log(x); // 输出 1
              x = 2仅限在定义它的块中。

              const的结果也是一样的:

              const c = 1;
              {
                const c = 2;
              }
              console.log(c); // 输出1, 而且不会报错
              注意,位于块范围之内的 const c = 2 并不会抛出SyntaxError: Identifier 'c' has already been declared这样的语法错误,因为在它自己的块中它可能是唯一一个被声明的常量。

              使用let声明的变量在块级作用域内能强制执行更新变量,下面的两个例子对比:
              var a = [];
              for (var i = 0; i < 10; i++) {
                    a[i] = function () {console.log(i);};
              }
              a[0]();                // 10
              a[1]();                // 10
              a[6]();                // 10

              /********************/

              var a = [];
              for (let i = 0; i < 10; i++) {
                    a[i] = function () {console.log(i);};
              }
              a[0]();                // 0
              a[1]();                // 1
              a[6]();                // 6
              使用function
              函数声明同样被限制在声明他的语句块内:

              foo('outside');  // TypeError: foo is not a function
              {
                function foo(location) {
                 console.log('foo is called ' + location);
                }
                foo('inside'); // 正常工作并且打印 'foo is called inside' 
              }









//续之前的

			var a;
			
			//为变量赋值
			a = 123;
			a = 456;
			a = 123124223423424;
			
			//声明和赋值同时进行
			var b = 789;
			var c = 0;
			
			var age = 80;
			
			console.log(age);
			
			
		</script>
	</head>
	<body>
	</body>
</html>






<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			
			/*
			 * 标识符
			 * 	- 在JS中所有的可以由我们自主命名的都可以称为是标识符
			 * 	- 例如:变量名、函数名、属性名都属于标识符
			 * 	- 命名一个标识符时需要遵守如下的规则:
			 * 		1.标识符中可以含有字母、数字、_、$
			 * 		2.标识符不能以数字开头
			 * 		3.标识符不能是ES中的关键字或保留字
			 * 		4.标识符一般都采用驼峰命名法
			 * 			- 首字母小写,每个单词的开头字母大写,其余字母小写
			 * 			helloWorld xxxYyyZzz
			 * 
			 * 	- JS底层保存标识符时实际上是采用的Unicode编码,
			 * 		所以理论上讲,所有的utf-8中含有的内容都可以作为标识符
			 */
			/*var if = 123;
			
			console.log(if);*/
			
			
			//千万不要这么用
			var 锄禾日当午 = 789;
			console.log(锄禾日当午);
			
			
		</script>
	</head>
	<body>
	</body>
</html>




补充

补充:js的

保留字和关键字
关键字
关键字可用于表示控制语句的开始或结束,或者用于执行特定操作等。关键字也是语言保留的,不能用作标识符。以下是ECMAScript的全部关键字:

break | do | instanceof | type
case | else | new | var
catch | finally | return | void
continue | for | switch | while
debugger | function | this | with
default | if | throw
delete | in | try

保留字
保留字也不能用作标识符,尽管保留字在这门语言中还没有任何特定的用途,但它们有可能在将来被用作关键字。以下是ECMA-262第3版定义的全部保留字:

abstract | enum | int | short
boolean | export | interface | static
byte | extends | long | super
char | final | native | synchronized
class | float | package | throws
const | goto | private | transient
debugger | implements | protected | volatile
double | import | public

第5版把在非严格模式下运行时的保留字缩减为下列这些:

class | enum | extends | super
const | export | import

在严格模式下,第五版还对以下保留字施加了限制”

implements | package | public
interface | private | static
let | protected | yield

注意:let和yield是第5版新增的保留字,其他都是第3版定义的。

在实现ECMAScript3和JavaScript引擎中使用关键字作标识符,会导致“Identifier Expected”错误。而使用保留字作标识符可能会也可能不会导致相同的错误,具体取决于特点的引擎。

除了上面列出的保留字和关键字。ECMA-262第5版对eval和arguments还施加了限制。在严格下,这两个名字也不能用作标识符或属性名,否则会抛出错误。
————————————————
关于补充部分
原文链接:https://blog.csdn.net/y935072878/article/details/87870066

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值