在以下两种方式进行空检查时,性能是否存在差异 -
if (!someObject) {
// dosomething
}
vs
if (someObject != null) {
// dosomething
}
答案 0 :(得分:6)
!someObject
检查所有虚假值。
Not ( empty string, undefined, null, 0, false) - will all pass the condition
其中第一个条件只检查null。
if (someObject !== null) {
console.log('falsey');
}
someObject = null; // no message in console
someObject = ''; // falsey
someObject = undefined; // falsey
someObject = 0; // falsey
someObject = false; // falsey
错误检查
if (!someObject) {
console.log('falsey');
}
someObject = null; // no message in console
someObject = ''; // no message in console
someObject = undefined; // no message in console
someObject = 0; // no message in console
someObject = false; // no message in console
答案 1 :(得分:0)
@Sushanth - 你不是100%正确,
!变量检查' false'但确实请阅读https://developer.mozilla.org/pl/docs/Web/JavaScript/Referencje/Obiekty/null
!null // true
所以,如果
!null // true
//then
null // false
)
请做一个简单的测试:
var a_null = null; //false
var b_null = !null //true
console.log(typeof(a_null)); //object, 'null' is an object.
console.log(typeof(b_null)); //boolean, now it is not an object.
if (a_null) var test_a = 1; // 'a_null' is false, so 'test_a' is 'Undefined'.
if (!a_null) var test_b = 2; // '!a_null' is true, so 'test_b = 2'.
if (b_null) var test_c = 3; // 'b_null' is true, so 'test_c = 3'.
if (!b_null) var test_d = 4; // '!b_null' is false, so 'test_d' is 'Undefined'.
console.log('TEST_A =',test_a,', TEST_B =',test_b,', TEST_C=',test_c,', TEST_D=',test_d); //TEST_A = Undefined, TEST_B = 2, TEST_C = 3 TEST_D = Undefined
祝福。
答案 2 :(得分:0)
要正确检查是否为空,您必须编写:
if(!someobject && typeof someobject!== "object")
理想情况下,typeof null
不应返回“对象”
You Don't Know JS中的“类型和语法”一章提到:
这个JS中的原始错误已经存在了将近二十年,并且可能永远不会得到修复,因为现有的Web内容依赖于其错误行为,因此“修复”该错误会创建更多的“错误”并破坏很多错误网络软件。