[转载]JS 随笔作用域和undefined,null,NaN区别

转自http://blog.csdn.net/zhuizhuziwo/article/details/6863622

1、var 声明变量,将变量的作用域提到整个局部区域内,比如函数内整个区域,并且alert放回undefined。能够屏蔽更大一级的作用域的的变量。
2、当变量没有声明时,会出现引用错误,返回not defined错误。
3、在函数对象构造函数内以下面这种方式
aaa  = "bbbb";
声明的变量,具有全局作用域,其为window对象的属性,能够为所有对象共享,在函数外面能够访问。
4、name为每个函数的属性,表明这个函数的函数名,所以这个以后要注意这个关键字
所以输出函数名的时候,需要使用aaa.name,  而window也具有name属性。
5、以后声明变量需要用var 。

坑爹2:js中undefined,null,NaN的区别

1.类型分析: 


js中的数据类型有undefined,boolean,number,string,object等5种,前4种为原始类型,第5种为引用类型。 
var a1; 
var a2 = true; 
var a3 = 1; 
var a4 = "Hello"; 
var a5 = new Object(); 
var a6 = null; 
var a7 = NaN; 
var a8 = undefined; 


alert(typeof a);   //显示"undefined" 
alert(typeof a1);  //显示"undefined" 
alert(typeof a2);  //显示"boolean" 
alert(typeof a3);  //显示"number" 
alert(typeof a4);  //显示"string" 
alert(typeof a5);  //显示"object" 
alert(typeof a6);  //显示"object" 
alert(typeof a7);  //显示"number" 
alert(typeof a8);  //显示"undefined" 


从上面的代码中可以看出未定义的值和定义未赋值的为undefined,null是一种特殊的object,NaN是一种特殊的number。 


2.比较运算 

var a1;        //a1的值为undefined 
var a2 = null; 
var a3 = NaN; 


alert(a1 == a2); //显示"true" 
alert(a1 != a2); //显示"false" 


alert(a1 == a3); //显示"false" 
alert(a1 != a3); //显示"true" 


alert(a2 == a3); //显示"false" 
alert(a2 != a3); //显示"true" 


alert(a3 == a3); //显示"false" 
alert(a3 != a3); //显示"true" 


从上面的代码可以得出结论:(1)undefined与null是相等;(2)NaN与任何值都不相等,与自己也不相等。

原文地址:https://www.cnblogs.com/johnason/p/2593455.html