在JavaScript中,undefined是一个特殊的值,表示一个变量没有被赋值,或者一个属性不存在。当使用一个没有被赋值的变量,或者访问一个不存在的属性时,其值为undefined。例如:
var x;
console.log(x); //输出undefined
var obj={a:1};
console.log(obj.b); //输出undefined
null是一个表示“没有对象”的对象,即该处不应该有值。而undefined表示“缺少值”,即该处应该有一个值,但是还没有定义。
在JavaScript中,null和undefined是两个不同的概念,在逻辑判断上也有区别:
var x=null;
var y;
console.log(x==y); //输出true,因为它们都代表“没有值”
除了未定义变量或属性外,还可能出现undefined的情况:
1、函数没有返回值或者return语句不完整:
function foo(){ console.log("hello");
var val=foo(); //变量val的值为undefined
2、形参没有传递值:
function foo(x){ console.log(x);
foo(); //输出undefined
3、访问数组中不存在的元素:
var arr=[1,2,3];console.log(arr[3]); //输出undefined
为了避免undefined的问题,在编写代码时应该注意以下几个方面:
1、尽量避免使用未定义的变量和属性,可以在使用前先对其进行初始化;
2、注意函数必须返回一个值,如果没有返回值应该使用return语句返回undefined;
3、在函数参数的默认值中可以使用undefined作为值,避免传入undefined时引起的问题;
4、使用typeof运算符检测变量是否为undefined。