admin管理员组文章数量:1023242
I'm reading a book that says that while it's possible to test whether a variable is defined and has a value by doing:
if(myVar != null && myVar != undefined) {
...
}
this is considered “poor style”, and that since both null
and undefined
are falsey values, we can more easily check if a variable has a value by using the more concise if
construct
if(myVar) {
...
}
But this confuses me, because while it’s true that null
and undefined
are falsey values, they are not the only falsey values. In other words, it seems to me that the former if
statement says, "run the code as long as the variable isn't null or undefined, whereas the latter if
statement is saying, "run the code as long as the variable isn't falsey." Supposing myVar == 0
, then the former if
statement would run, but the latter if
statement would not. Therefore these two if
statements are not equivalent. Am I wrong?
EDIT: Here's a screen grab if you want to see their exact wording:
I'm reading a book that says that while it's possible to test whether a variable is defined and has a value by doing:
if(myVar != null && myVar != undefined) {
...
}
this is considered “poor style”, and that since both null
and undefined
are falsey values, we can more easily check if a variable has a value by using the more concise if
construct
if(myVar) {
...
}
But this confuses me, because while it’s true that null
and undefined
are falsey values, they are not the only falsey values. In other words, it seems to me that the former if
statement says, "run the code as long as the variable isn't null or undefined, whereas the latter if
statement is saying, "run the code as long as the variable isn't falsey." Supposing myVar == 0
, then the former if
statement would run, but the latter if
statement would not. Therefore these two if
statements are not equivalent. Am I wrong?
EDIT: Here's a screen grab if you want to see their exact wording:
Share Improve this question edited Oct 10, 2015 at 18:27 yroc asked Oct 10, 2015 at 18:17 yrocyroc 9661 gold badge11 silver badges18 bronze badges 10- 3 Yes both are not replica of each other. This is all you want? – Manwal Commented Oct 10, 2015 at 18:20
- You are right and it is a matter of choice. When you write the code, consider the most mon use cases. – user2182349 Commented Oct 10, 2015 at 18:21
-
There is no other way to find out if the variable is null or undefined. Definitely the two snippets that you have shown are not the same. If you
myvar
variable is a number then you can useisNaN
function. – molecule Commented Oct 10, 2015 at 18:23 - @Manwal No, it's not all I want. Given that they are not "replica" (equivalent) of one another, why is the book stating that it's OK to use one in place of the other? – yroc Commented Oct 10, 2015 at 18:23
- 1 @yroc Are you sure that's exactly what your book says? If so the book is wrong. – Spencer Wieczorek Commented Oct 10, 2015 at 18:24
2 Answers
Reset to default 5To check if the variable is either null
or undefined
, use the not single equal operator checking for null
.
if (myVar != null) {
}
However, it's always best practice to use triple equals to be more explicit.
if (!(myVar === null || typeof myVar === 'undefined')) {
}
Comparisons
(undefined == null) => true
(null == null) => true
(undefined === null) => false
(null === null) => true
(0 == null) => false
(0 == undefined) => false
(0 === null) => false
(0 === undefined) => false
(false == null) => false
(false == undefined) => false
(false === null) => false
(false === undefined) => false
(null) => false
(undefined) => false
(0) => false
(false) => false
DEMO: http://jsfiddle/xk9L3yuz/3/
There isn't a short way. You first need to check for undefined before null, because
!myVar
makes the assumption that myVar is previously defined, and will throw
Uncaught ReferenceError: myVar is not defined
in the event that you never defined that variable.
This check is only required if you're pulling data from some external source and are unsure if the variable exists. If you already defined it somewhere in your code and are for instance waiting for user input to set it, you can take the shortcut of
!myVar
simply because you know it's already defined because you did it earlier in the code.
I'm reading a book that says that while it's possible to test whether a variable is defined and has a value by doing:
if(myVar != null && myVar != undefined) {
...
}
this is considered “poor style”, and that since both null
and undefined
are falsey values, we can more easily check if a variable has a value by using the more concise if
construct
if(myVar) {
...
}
But this confuses me, because while it’s true that null
and undefined
are falsey values, they are not the only falsey values. In other words, it seems to me that the former if
statement says, "run the code as long as the variable isn't null or undefined, whereas the latter if
statement is saying, "run the code as long as the variable isn't falsey." Supposing myVar == 0
, then the former if
statement would run, but the latter if
statement would not. Therefore these two if
statements are not equivalent. Am I wrong?
EDIT: Here's a screen grab if you want to see their exact wording:
I'm reading a book that says that while it's possible to test whether a variable is defined and has a value by doing:
if(myVar != null && myVar != undefined) {
...
}
this is considered “poor style”, and that since both null
and undefined
are falsey values, we can more easily check if a variable has a value by using the more concise if
construct
if(myVar) {
...
}
But this confuses me, because while it’s true that null
and undefined
are falsey values, they are not the only falsey values. In other words, it seems to me that the former if
statement says, "run the code as long as the variable isn't null or undefined, whereas the latter if
statement is saying, "run the code as long as the variable isn't falsey." Supposing myVar == 0
, then the former if
statement would run, but the latter if
statement would not. Therefore these two if
statements are not equivalent. Am I wrong?
EDIT: Here's a screen grab if you want to see their exact wording:
Share Improve this question edited Oct 10, 2015 at 18:27 yroc asked Oct 10, 2015 at 18:17 yrocyroc 9661 gold badge11 silver badges18 bronze badges 10- 3 Yes both are not replica of each other. This is all you want? – Manwal Commented Oct 10, 2015 at 18:20
- You are right and it is a matter of choice. When you write the code, consider the most mon use cases. – user2182349 Commented Oct 10, 2015 at 18:21
-
There is no other way to find out if the variable is null or undefined. Definitely the two snippets that you have shown are not the same. If you
myvar
variable is a number then you can useisNaN
function. – molecule Commented Oct 10, 2015 at 18:23 - @Manwal No, it's not all I want. Given that they are not "replica" (equivalent) of one another, why is the book stating that it's OK to use one in place of the other? – yroc Commented Oct 10, 2015 at 18:23
- 1 @yroc Are you sure that's exactly what your book says? If so the book is wrong. – Spencer Wieczorek Commented Oct 10, 2015 at 18:24
2 Answers
Reset to default 5To check if the variable is either null
or undefined
, use the not single equal operator checking for null
.
if (myVar != null) {
}
However, it's always best practice to use triple equals to be more explicit.
if (!(myVar === null || typeof myVar === 'undefined')) {
}
Comparisons
(undefined == null) => true
(null == null) => true
(undefined === null) => false
(null === null) => true
(0 == null) => false
(0 == undefined) => false
(0 === null) => false
(0 === undefined) => false
(false == null) => false
(false == undefined) => false
(false === null) => false
(false === undefined) => false
(null) => false
(undefined) => false
(0) => false
(false) => false
DEMO: http://jsfiddle/xk9L3yuz/3/
There isn't a short way. You first need to check for undefined before null, because
!myVar
makes the assumption that myVar is previously defined, and will throw
Uncaught ReferenceError: myVar is not defined
in the event that you never defined that variable.
This check is only required if you're pulling data from some external source and are unsure if the variable exists. If you already defined it somewhere in your code and are for instance waiting for user input to set it, you can take the shortcut of
!myVar
simply because you know it's already defined because you did it earlier in the code.
本文标签: Shorter way of testing for null and undefined in JavaScriptStack Overflow
版权声明:本文标题:Shorter way of testing for null and undefined in JavaScript? - Stack Overflow 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/questions/1745593666a2158033.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论