先放代码:if(asdf){}如上代码,如果没有定义asdf参数时,会执行报错,但是下面的代码就不会报错,这是为什么?他们有什么区别?if(window.asdf){}
2 回答
繁星淼淼
TA贡献1775条经验 获得超11个赞
第一个asdf是一个未声明的变量第二个window.asdf的asdf是windows对象的属性,其值为undefinedjs中,不存在的属性,其值为undefined。
智慧大石
TA贡献1946条经验 获得超3个赞
使用var定义变量,即使用varasdf=124;和使用asdf=124;window.asdf=124;是不同的,第一个方法定义的asdf属性不能使用delete,而第二种则是可以使用delete删除掉的属性。(不过很遗憾,使用eval定义的变量(第一种方式),依然可以使用delete删除)猜测:两种写法实际上语义的确是完全不同的,第一种写法,定义的是一个变量,访问的也是变量;而第二种,则是定义和访问属性。似乎并没有回答题主的问题……
添加回答
举报
0/150
提交
取消