84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
记得之前看过一个javascript编程风格指南(好像是腾讯的一个团队的),里面说typeof a === 'undefined'要比用a === undefined要好,是不是这样的?如果是的话,为什么?
javascript
typeof a === 'undefined'
a === undefined
常见的有三种比较 undefined 的方法,看代码
var test1 = (function(undefined) { return function() { var value; // undefined console.log("test1", value === undefined); }; })("hello"); var test2 = (function(undefined) { return function() { var value; // undefined console.log("test2", typeof (value) === "undefined"); }; })("hello"); var test3 = (function(undefined) { return function() { var value; // undefined console.log("test3", value === void (0)); }; })("hello"); test1(); test2(); test3();
由于 javascript 的 undefined 是可以重定义的,所以上面的代码模拟了 undefined 被重新定义了的情况,结果可以看到 value === undefined 判断出错了。另外两种办法,其实差不多,不过明显 value === void(0) 写的字要少些,懒人可选!
undefined
value === undefined
value === void(0)
注:上面的代码都是在 value 变量被定义了的情况。如果连变量都没定义,只有 typeof(value) 不会抛异常出来。
value
typeof(value)
是这样的 ,因为如果您a变量未初始化时的话用 a=== undefined会直接抛异常导致js代码终止,用typeof就不会
不过你a变量未初始化未声明时,用 typeof a一样显示'undefined',和var a; 后的typeof a 结果一样,这个也要考虑到
function test1() { console.log(typeof aaa === 'undefined'); } function test2() { console.log(aaa === undefined); } test1(); // true test2(); // 报错,Uncaught ReferenceError: aaa is not defined
javascript 中为什么要用typeof x === 'undefined'
常见的有三种比较 undefined 的方法,看代码
由于 javascript 的
undefined
是可以重定义的,所以上面的代码模拟了undefined
被重新定义了的情况,结果可以看到value === undefined
判断出错了。另外两种办法,其实差不多,不过明显value === void(0)
写的字要少些,懒人可选!是这样的 ,因为如果您a变量未初始化时的话用 a=== undefined会直接抛异常导致js代码终止,用typeof就不会
不过你a变量未初始化未声明时,用 typeof a一样显示'undefined',和var a; 后的typeof a 结果一样,这个也要考虑到
javascript 中为什么要用typeof x === 'undefined'