JS 中如何判断 undefined
JavaScript 中有两个特殊数据类型:undefined 和 null,下节介绍了 null 的判断,下面谈谈 undefined 的判断。
以下是不正确的用法:
var exp = undefined;
if (exp == undefined)
{
alert("undefined");
}
exp 为 null 时,也会得到与 undefined 相同的结果,虽然 null 和 undefined 不一样。注意:要同时判断 undefined 和 null 时可使用本法。
var exp = undefined;
if (typeof(exp) == undefined)
{
alert("undefined");
}
typeof 返回的是字符串,有六种可能:"number"、"string"、"boolean"、"object"、"function"、"undefined"
以下是正确的用法:
var exp = undefined;
if (typeof(exp) == "undefined")
{
alert("undefined");
}
--------------------------------------------------------------------------------
JS 中如何判断 null
以下是不正确的用法:
var exp = null;
if (exp == null)
{
alert("is null");
}
exp 为 undefined 时,也会得到与 null 相同的结果,虽然 null 和 undefined 不一样。注意:要同时判断 null 和 undefined 时可使用本法。
var exp = null;
if (!exp)
{
alert("is null");
}
如果 exp 为 undefined 或者数字零,也会得到与 null 相同的结果,虽然 null 和二者不一样。注意:要同时判断 null、undefined 和数字零时可使用本法。
var exp = null;
if (typeof(exp) == "null")
{
alert("is null");
}
为了向下兼容,exp 为 null 时,typeof 总返回 object。
var exp = null;
if (isNull(exp))
{
alert("is null");
}
JavaScript 中没有 isNull 这个函数。
以下是正确的用法:
var exp = null;
if (!exp && typeof(exp)!="undefined" && exp!=0)
{
alert("is null");
}
未赋值,就是 undefined
var v1;
var v2 = "v2";
v3 = "v3";
// v4; // 既没有使用 var,也没有为其赋值。
alert(typeof v1); // undefined
alert(typeof v2); // string
alert(typeof v3); // string
alert(typeof v4); // undefined
v1、v4 的 typeof 是 undefined,他们的特点是:
- v1 声明了,但没有赋值;
- v4 既没有声明,也没有赋值;
划去相同的部分,也就是说只要没有赋值 typeof 就是 undefined。还有一种情况没说:var v1 = undefined;,这等效于 var v1,所以没说。
虽然均是 undefined,但使用有所不同
那么上面的 v1 和 v4 有没有其他区别呢,当然有了,这表现在使用上,v1 虽然未被定义,但可以使用,而 v4 是不能使用的。
var v1;
function foo(p)
{
}
foo(v1); // 运行正常
foo(v4); // v4 未定义错误
if (reValue== undefined){
alert("undefined");
}
发现判断不出来,最后查了下资料要用typeof
方法:
if (typeof(reValue) == "undefined") {
alert("undefined");
}
typeof 返回的是字符串,有六种可能:"number"、"string"、"boolean"、"object"、"function"、"undefined"
好文要顶
关注我
收藏该文
评论
这个代码肯定可以判断出来的
1
2
3
|
if (reValue== undefined){
alert( "undefined" );
}
|
没有问题,问题是你写成:
1
2
3
|
if (reValue== "undefined" ){
alert( "undefined" );
}
|
把undefined写成字符串了,
undefined是类型的结果,不是字符串,当typeof后打印是字符串类型,所以:
1
2
3
|
if ( typeof (reValue) == "undefined" ) {
alert( "undefined" );
}
|
也是正确的。
@dcb3688
四楼
if (reValue== undefined){
alert("undefined");
}
这样判断没有错误,但是,你忽略了一种场景;如果reValue没有声明,浏览器会报错的;而typeof则不会;而且,==可能会涉及强制类型转换;在js中你这种场景建议用“===”,但是js仍会报错;所以楼主的是对的。
只能用 === 运算来测试某个值是否是未定义的,因为 == 运算符认为 undefined 值等价于 null。
6楼说的在理,我再来补充一下,关于js中的==与===,==只是进行数值比较,在比较时会进行强制类型转换,所以比较结果不准确,===会进行数值与类型的比较相当于全等,所以在js比较两个数相等时,建议始终使用===进行比较。同时在js当中undefined有点特殊,它既可以作为数据类型,也可以作为一个值对变量赋值,它的数据类型是undefined,而null只是可以作为值赋给变量,并不是数据类型,它的数据类型是object。举些例子:
例一:
var reg;
alert(reg===undefined);//true
例二:
alert(reg===undefined);//报错,reg is not defined
例三:
var reg;
alert(reg==null);//true,事实上reg的值是undefined,但是我使用==进行比较,这里进行了强制数据类型转换,因而结果是true
例四:
alert(typeof reg==="undefined");//true
相关推荐
直到查阅到类似情况:https://forums.xilinx.com/t5/Embedded-Development-Tools/SDK-undefined-reference/td-p/818300 发现我的工程的问题是gcc 链接时找不到库文件,如下图我在gcc链接命令中添加了 -llwip4 (该...
相信大家都知道当声明一个变量,并且没有给赋值的情况下,它的初始值是undefined。但是在javascript中,怎么检查一个值是否为undefined呢? 简单来说,在现代浏览器中,你可以安全的比较变量是否为undefined if ...
js判断undefined类型,undefined,null,NaN的区别
$act $ POST["act"]; 用以上代码总是提示 Notice: Undefined index: act in F: windsflybook post php on line 18 另外 有时还会出现 引用内容 Notice: Undefined variable: Submit
QUARTUS II 编译报错top level design entity “...” is undefined的解决方法,很实用
内核编译出现 undefined reference to `__gnu_mcount_nc'问题的补丁包
ODBC解决Call to undefined function odbc_connect
Vue打包Cannot read property 'tapPromise' of undefined报错处理.docx
C生成静态库给C++调用出现undefined reference to ...解决方案 已经写好makefile,还有头文件,看注释,基本没问题的
【转】undefined reference to错误的解决方法.doc
理解javascript中undefined和null的区别
解决Android下getifaddrs和freeifaddrs undefined reference 的问题,即android下的c实现
Undefined异常模式02
js判断undefined类型 今天使用showModalDialog打开页面,返回值时。当打开的页面点击关闭按钮或直接点浏览器上的关闭则返回值是undefined所以自作聪明判断 var reValue=window.showModalDialog(“”,””,””); ...
null和undefined的区别 null :表示无值;undefined : 表示一个未声明的变量,或已声明但没有赋值的变量,或一个并不存在的对象属性。==运算符将两者看作相等。如果要区分两者,要使用===或typeof运算符。使用if (!...
/opt/QtSDK/Desktop/Qt/474/gcc/lib/libQtGui.so:-1: 错误:undefined reference to `FT_Library_SetLcdFilter'
Undefined exploded archive location Tomcat之项目不能发布解决办法
php中连接mysql时出现Fatal error Call to undefined function mysql_connect() 解决方法
资源来自pypi官网。 资源全名:undefined_AD-2.1.2.tar.gz