这是Javascript中的一个非常小的【版权所有,侵权必究】未经授权,禁止复制转载。问题,这里单独拿出来讲,是对我自己在使用【本文首发于唐霜的博客】著作权归作者所有,禁止商业用途转载。中的一个强化,因为我自己就经常搞错。到底【版权所有】唐霜 www.tangshuang.net转载请注明出处:www.tangshuang.net是undefined还是”u【本文受版权保护】【版权所有,侵权必究】ndefined”呢?
原创内容,盗版必究。转载请注明出处:www.tangshua【作者:唐霜】【作者:唐霜】ng.net本文版权归作者所有,未经授权不得转载。【原创内容,转载请注明出处】首先,我们要搞明白什么是undefine著作权归作者所有,禁止商业用途转载。原创内容,盗版必究。d。这里有一篇文章,详细的阐述了undefined的由来(未经授权,禁止复制转载。未经授权,禁止复制转载。和null有关),并且说明了一些使用un【原创内容,转载请注明出处】【转载请注明来源】defined的情况。
【版权所有】唐霜 www.tangshu【转载请注明来源】【本文受版权保护】ang.net转载请注明出处:www.tangshua【关注微信公众号:wwwtangshuangnet】著作权归作者所有,禁止商业用途转载。ng.net本文作者:唐霜,转载请注明出处。【访问 www.tangshuang.n【本文首发于唐霜的博客】本文作者:唐霜,转载请注明出处。et 获取更多精彩内容】中文翻译过来,undefined就是“没著作权归作者所有,禁止商业用途转载。本文作者:唐霜,转载请注明出处。定义”,这种语境也非常容易理解:本来应该【版权所有】唐霜 www.tangshuang.net原创内容,盗版必究。有的,结果要用的时候却没有,不管是你故意【未经授权禁止转载】【原创不易,请尊重版权】漏掉了还是不小心忘记了,总之它原本应该被【本文受版权保护】【版权所有,侵权必究】定义好的,结果却没有定义好。打个比喻就是【未经授权禁止转载】【关注微信公众号:wwwtangshuangnet】,我想用一把钳子,打开装钳子的盒子,结果【原创内容,转载请注明出处】转载请注明出处:www.tangshuang.net却没要找到钳子,本来应该有的,我现在要用【原创不易,请尊重版权】本文作者:唐霜,转载请注明出处。,却没找到!
【作者:唐霜】原创内容,盗版必究。【版权所有,侵权必究】在使用中是什么情况呢?
【未经授权禁止转载】【本文受版权保护】【未经授权禁止转载】【未经授权禁止转载】原创内容,盗版必究。(1)变量被声明了,但没有赋值时,就等于【版权所有,侵权必究】【版权所有,侵权必究】undefined。
【关注微信公众号:wwwtangshua【关注微信公众号:wwwtangshuangnet】【版权所有,侵权必究】ngnet】【版权所有,侵权必究】未经授权,禁止复制转载。【版权所有,侵权必究】(2) 调用函数时,应该提供的参数没有提【访问 www.tangshuang.net 获取更多精彩内容】转载请注明出处:www.tangshuang.net供,该参数等于undefined。
著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。【作者:唐霜】(3)对象没有赋值的属性,该属性的值为u【原创不易,请尊重版权】本文版权归作者所有,未经授权不得转载。ndefined。
本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshu【本文首发于唐霜的博客】本文版权归作者所有,未经授权不得转载。ang.net【转载请注明来源】(4)函数没有返回值时,默认返回unde著作权归作者所有,禁止商业用途转载。本文作者:唐霜,转载请注明出处。fined。
【本文受版权保护】本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。【关注微信公众号:wwwtangshua【未经授权禁止转载】本文作者:唐霜,转载请注明出处。ngnet】
第一种,比如:
【关注微信公众号:wwwtangshua【版权所有,侵权必究】【访问 www.tangshuang.net 获取更多精彩内容】ngnet】转载请注明出处:www.tangshua【本文受版权保护】【版权所有,侵权必究】ng.net【作者:唐霜】var num 5 + num // NaN
上面这个情况我们是很少出现的,如果出现了【本文首发于唐霜的博客】本文版权归作者所有,未经授权不得转载。,就会得到NaN的结果,这是因为这个时候转载请注明出处:www.tangshuang.net【原创内容,转载请注明出处】num=undefined,undefi未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。ned不能和数字相加。
【访问 www.tangshuang.n转载请注明出处:www.tangshuang.net著作权归作者所有,禁止商业用途转载。et 获取更多精彩内容】【版权所有,侵权必究】未经授权,禁止复制转载。【未经授权禁止转载】第二种情况,比如:
【版权所有,侵权必究】本文作者:唐霜,转载请注明出处。【作者:唐霜】function get(param) {
return param
}
var value = get()
这里在使用的时候,我们没有给get()函【版权所有】唐霜 www.tangshuang.net未经授权,禁止复制转载。数传递参数,而Javascript中不像【原创不易,请尊重版权】【本文受版权保护】php中一样,可以在声明时声明为get(parm = 6),给一个初始值,Javascript这个【版权所有,侵权必究】【原创内容,转载请注明出处】初始值是无效的(ES6已经支持这种初始赋著作权归作者所有,禁止商业用途转载。原创内容,盗版必究。值,而且初始值可以是已经定义好的变量),【本文受版权保护】转载请注明出处:www.tangshuang.net所以,要设定初始值的处理办法是如下:
转载请注明出处:www.tangshua本文版权归作者所有,未经授权不得转载。转载请注明出处:www.tangshuang.netng.net【版权所有】唐霜 www.tangshu转载请注明出处:www.tangshuang.net本文作者:唐霜,转载请注明出处。ang.net著作权归作者所有,禁止商业用途转载。function get(parm) {
if(parm === undefined) {
parm = 6
}
}
这里你就可以非常明白的看到,当没有赋予变【版权所有,侵权必究】【访问 www.tangshuang.net 获取更多精彩内容】量时,该参数为undefined。
【版权所有,侵权必究】【本文受版权保护】第三种情况,比如:
【本文受版权保护】未经授权,禁止复制转载。【版权所有】唐霜 www.tangshu未经授权,禁止复制转载。【本文受版权保护】ang.net本文作者:唐霜,转载请注明出处。var obj = {}
var obj_id = obj.id
这个时候,obj.id=undefine【版权所有,侵权必究】著作权归作者所有,禁止商业用途转载。d。
【访问 www.tangshuang.n【转载请注明来源】【版权所有】唐霜 www.tangshuang.netet 获取更多精彩内容】本文版权归作者所有,未经授权不得转载。第四种情况,比如:
【作者:唐霜】【版权所有】唐霜 www.tangshu未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。ang.netvar value = 5
function get(num) {
value += num
}
var a = get(2)
这个时候你就会发现,a=undefine本文作者:唐霜,转载请注明出处。【未经授权禁止转载】d,而value=7,这是因为funct【访问 www.tangshuang.net 获取更多精彩内容】【原创不易,请尊重版权】ion没有设置返回值,默认返回undef著作权归作者所有,禁止商业用途转载。原创内容,盗版必究。ined。
【访问 www.tangshuang.n本文作者:唐霜,转载请注明出处。【本文首发于唐霜的博客】et 获取更多精彩内容】【原创不易,请尊重版权】本文版权归作者所有,未经授权不得转载。关于undefined的条件判断
未经授权,禁止复制转载。原创内容,盗版必究。原创内容,盗版必究。当直接使用变量进行全等判断时使用unde著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。fined,使用typeof判断时,使用著作权归作者所有,禁止商业用途转载。本文作者:唐霜,转载请注明出处。”undefinedR【版权所有】唐霜 www.tangshuang.net著作权归作者所有,禁止商业用途转载。21;:
【版权所有】唐霜 www.tangshu本文版权归作者所有,未经授权不得转载。【本文首发于唐霜的博客】ang.net原创内容,盗版必究。【关注微信公众号:wwwtangshua著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。ngnet】var a
if (a === undefined) {
// 能做这样的判断,前提是a已经声明过了,如果a没有声明过,那么会报错
}
if (typeof a === "undefined") {
// a可以未经声明
}
if (a == undefined) {
// a须经声明
// a=0时,也成立
}
所以,下次你在进行判断的时候,不要犯同样著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。的错误。
【版权所有】唐霜 www.tangshu【作者:唐霜】【本文受版权保护】ang.net【转载请注明来源】2015-05-08 5797


