您现在的位置: 万盛学电脑网 >> 程序编程 >> 脚本专题 >> javascript >> 正文

深入理解JS中的变量及作用域、undefined与null

作者:佚名    责任编辑:admin    更新时间:2022-06-22

 本篇文章主要是对JS中的变量及作用域、undefined与null进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助

Situation One   代码如下: <script>   var i; //全局变量   //方法名是camel命名法   //方法里面的变量是局部变量     function sayHello(){   var x=100;   alert(x);   x++;   }   sayHello(); //输出100   alert(x); //报错,因为x是局部变量,访问不到 </script>     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++){     alert(i)   } //在for循环里面定义的变量是块级作用域   alert(i); //因为i是局部变量,所以输出2   } sayHello(); </script>     注:变量使用前可以不用var声明,这样的变量会被认为是“全局变量”,但很少这样用   关于undefined与null   有以下几种情况的,变量的值为undefined 1、变量定义,但没有赋值,则变量的值为undefined 2、调用的方法没有返回值,在返回的值为undefined 3、对象的属性值不存在,则返回值为undefined,如:document.ddd   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('数字');   break;     case '10':       alert('字符串');   break; }     输出 字符串 switch中的判断要考虑类型   总结:if中的判断是判断数值,不考虑类型