深入理解JS中的变量及作用域、undefined与null |
Situation One 复制代码 代码如下: <script> var i; //全局变量 //方法名是camel命名法 //方法里面的变量是局部变量 function sayHello(){ Situation Two 复制代码 代码如下: <script> function sayHello(){ var x=100; if(x==100){ var y=x+1; alert(y); //输出101 } alert(y); //也输出101,在方法内部,不存在块级作用域,在C#中就不可以了!!! for(var i=0;i<2;i++){ } 注:变量使用前可以不用var声明,这样的变量会被认为是“全局变量”,但很少这样用 关于undefined与null 有以下几种情况的,变量的值为undefined Example1: 复制代码 代码如下: var xx; var yy=null; if(xx==yy){ alert(相等); } else{ alert(不等); 输出结果为相等,因为在进行if判断时,浏览器会对xx及yy进行值的判断,因为两者都没有具体的值,认为他们都是false 。 如果if判断中换成===[全等于符号],则输出不等!因为===表示要求xx及yy的数据类型和值都要相同才可以! Example2: 复制代码 代码如下: var xx=10 var yy=10; if(xx==yy){ alert(相等); else{ alert(不等); 输出相等,如果换成===,则输出不等 Example3: 复制代码 代码如下: var n=10; switch(n){ case 10: alert(数字); case 10: alert(字符串); 输出 字符串 switch中的判断要考虑类型 总结:if中的判断是判断数值,不考虑类型 |