1.JS总体上分为:原始值和引用值
原始值分为:Number、Boolean、String、undefined、null;原始值不可改变的值,存储在栈【stack】的,先进后出!
引用值:array、Object、function、date、RegExp;原始值是可改变的,引用值大体是存储在堆【heap】中;
说明:一个变量经过声明,但是没有赋值,默认情况下就是undefined!例如:
1 <body> 2 <script type="text/javascript"> 3 var b; 4 document.write(b); 5 </script> 6 </body>
2.JS错误分为:低级错误【语法解析错误】和逻辑错误【标准错误,情有可原】,每个js语句后面都要以;【分号】结尾,但是函数、for循环、if语句后面不需要加分号;
①. 低级错误:
1 <script type="text/javascript"> 2 var a=1; 3 var b=2: 4 var c=3; 5 document.write(b); 6 </script>
像上面这种,本来b后面是需要加分号的,结果却是加上了冒号,所以这叫语法解析错误!
②.逻辑错误:
1 <script type="text/javascript"> 2 var a=1; 3 var c=3; 4 document.write(b); 5 </script>
上面这段代码明明没有变量b,但是我们这里愣是使用了document.write(b)将变量b的值输出了,这是逻辑错误!
3.一个html页面中可以使用多个js代码块,如下所示:
1 <body> 2 <script type="text/javascript"> 3 var a=1; 4 </script> 5 <script type="text/javascript"> 6 document.write(a); 7 </script> 8 </body>
我们从上面的js代码块中声明了变量a,但是是从下面的js代码块中输出了变量a,这和从一个代码块中声明a和输出a没有区别!要真说有没有区别呢?实际上也是有点的,如下所示:
1 <body> 2 <script type="text/javascript"> 3 var a=1; 4 document.write(c); 5 </script> 6 <script type="text/javascript"> 7 var b=2; 8 document.write(b); 9 </script> 10 </body>
这样有多个代码块的时候,当一个代码块中【上边的代码块】出了错误并不会影响下面代码块!
4.运算操作符:
+ 号,作用:
①.数学运算
②.任意数据类型和字符串相加都是字符串
5.凡是该返回一个数字的,但是又不知道这个数字是几的时候就会返回一个NaN【Not a Number】
eg:
1 <body> 2 <script type="text/javascript"> 3 var a = 0/0; 4 document.write(a); 5 </script> 6 </body>
如果是1/0,则返回值就是无限的Infinity,如下所示:
1 <body> 2 <script type="text/javascript"> 3 var a = 1/0; 4 document.write(a); 5 </script> 6 </body>
如果是-1/0则结果就是负无穷【-Infinity】,如下所示:
1 <body> 2 <script type="text/javascript"> 3 var a = -1/0; 4 document.write(a); 5 </script> 6 </body>
6.==是比较运算符,返回值为Boolean类型;如1==1,返回true;再例如:
1 <body> 2 <script type="text/javascript"> 3 a = Infinity == Infinity; 4 document.write(a); 5 </script> 6 </body>
返回值也是true;但是有一个特例:NaN,这家伙一急眼连自己都不认识,如下:
1 <body> 2 <script type="text/javascript"> 3 a = NaN == NaN; 4 document.write(a); 5 </script> 6 </body>
返回值为false;
7.&&【与】、||【或】、!【非】
&&:与运算符,当&&连接两个表达式或者数值的时候,先看&&号前面的数值,如果该值转换成布尔值为false,则直接返回该值,
如果该值转换为布尔值为true,则直接返回&&后面的值。eg:
1 <body> 2 <script type="text/javascript"> 3 a = 0 && 2; 4 document.write(a); 5 </script> 6 </body>
返回值就为0,如果是下面的这个例子:
1 <body> 2 <script type="text/javascript"> 3 a = 1 && 2+2; 4 document.write(a); 5 </script> 6 </body>
则返回值就为4;
所以:&&运算符连接两个表达式或者变量的时候,全真才是真,有一个为假,就返回假!
当&&连接多个表达式或者变量的时候,只要是&&前面的为真,那么它就往后走,直到遇到转换成布尔值为false的值的时候就直接返回该值【不用管真或者假】,如果直到最后都是真,那么返回最后一个值!如下:
1 <body> 2 <script type="text/javascript"> 3 a = 1+2 && 2+2 && 3-3 && 1+3; 4 document.write(a); 5 </script> 6 </body>
返回值就是0,而如下代码:
1 <body> 2 <script type="text/javascript"> 3 a = 1+2 && 2+2 && 3-2 && 1+3; 4 document.write(a); 5 </script> 6 </body>
返回值就是4;
注意:undifined、null、NaN、""【空串】、0、false 这六个值转换成Boolean值之后都是false!
||:或操作运算符,它和&&运算符的区别是:&&运算符遇到false的时候停止,而||或运算符是遇到true的时候返回,如果到最后没遇到为true的,那么就把最后一个返回!例如:
1 <body> 2 <script type="text/javascript"> 3 var a= 4 || 3; 4 document.write(a); 5 </script> 6 </body>
返回的是4,而如果是:
1 <body> 2 <script type="text/javascript"> 3 var a= 0 || 3; 4 document.write(a); 5 </script> 6 </body>
返回的就是3,如果是:
1 <body> 2 <script type="text/javascript"> 3 var a= 0 || false || null; 4 document.write(a); 5 </script> 6 </body>
返回的就是null;
!是取反的意思,这个非运算符会首先将运算符后面的表达式或者数字给转换成布尔值,然后取反操作,例如:
1 <body> 2 <script type="text/javascript"> 3 var a = 4; 4 document.write(!a); 5 </script> 6 </body>
返回值为false;
如果是:
1 <body> 2 <script type="text/javascript"> 3 var a = undefined; 4 document.write(!a); 5 </script> 6 </body>
则返回值为true;
当然javaScript中还有&、|,这个&、|是二进制的与、或【也就是会先把两边的数值转换成二进制,然后进行相与的操作或者或的操作,实际开发中几乎不用】!
在浏览器接收用户输入的数据,案例如下:
1 <body> 2 <script type="text/javascript"> 3 var score =parseInt(window.prompt("input")); 4 if(score == 100){ 5 alert("满分"); 6 } 7 </script> 8 </body>