1.注意:只要+【加号】两边没有字符串,我们就按正常的数字相加就OK了
1 <body> 2 <script type="text/javascript"> 3 var str = false +1; 4 document.write(str); 5 </script> 6 </body>
上面这道题实际上带有隐世类型转换,false转换为0,然后和1相加,所以结果为1;
2.注意:运算符之间的优先级
1 <body> 2 <script type="text/javascript"> 3 var demo = false ==1; 4 document.write(demo); 5 </script> 6 </body>
上面这道题显然==判断是否相等的优先级要高于=赋值运算符,所以先看false是否等于1【false转换成数字为0,显然不等于1,返回false】,然后将比较的结果赋值给变量demo,所以demo的值为false;
3.注意:只有一种情况我们在不定义变量的情况下,使用变量是不报错的,就是使用typeof(a)这种情况,而且返回值为字符串类型的undefined;
注意:虽然null是一个原始类型,但是当null交给typeof的时候,typeof总是认为null是给Object占位使用的,所以我们使用typeof(null)的时候,返回值是Object;
注意:true转换为数字是1,false转换成数字是0,那么-true【负true就是-1】,一般情况下前面加+号或者-号的都是将其转换为数字【隐式转换】,所以+undefined是想将undefined转换为数字【Number】,当然undefined是转换不成Number数字的,所以返回值是NaN【not a number】,而-1+NaN=NaN,NaN+""【空串】得到的结果就是"NaN"的字符串!所以如下代码:
1 <body> 2 <script type="text/javascript"> 3 if(typeof(a)&&-true + (+undefined) +""){ 4 document.write("基礎扎實"); 5 } 6 </script> 7 </body>
所以if条件中的语句就成了"undefined"字符串 和 “NaN”字符串做与操作,由于是两个字符串做与操作,所以if条件得到的返回值是true,那么就可以执行if语句体,从而可以输出:基础扎实!
1 <body> 2 <script type="text/javascript"> 3 if(11 + "11"*2 == 33){ 4 document.write(‘基础扎实‘); 5 } 6 </script> 7 </body>
注意:凡是用到*【乘号】的,我们一般都是将*【乘号】两边的东西转换为数字,所以这里的字符串"11"会被隐式转换为数字11,然后乘以2,得到22,然后和前面的11相加,得到33再和33比较是否相等,显然是相等的,所以会执行if语句内部的输出,最终会输出:基础扎实!
隐式转换:除了+号之外的运算符,如-,*,/,%,等运算符两边的东西都是要先隐式转换为数字,然后再进行计算的!如下所示:
"11"-"2":实际上是将字符串11和字符串2转换为数字11和数字2,然后再进行相减!
4.注意:""【空串】和" "【空格字符串不是一回事】,空串转换为布尔值是false,而空格字符串转换为布尔值
是true;所以!""是true,而 !" "是false,而 !!""则是false,!!" "则是true,所以如下代码:
1 <body> 2 <script type="text/javascript"> 3 !!" " + !!"" - !!false || document.write(‘你觉得能打印,你就是猪‘); 4 </script> 5 </body>
||前面的是:true + false -false其实就是转换为数字再计算,得到1,||【或】好前面是1,相当于true,所以就不会执行||【或】后面的代码,所以不会输出后面的内容!
5.CSS的属性值有几个?分别是啥?代表啥含义:
①.inline【行内元素】
②.inline-block【行内块元素】
③.block【块元素】
④.none【样式消失,且不占用空间】
6.