if(thisVariable){
//do sth.
}
var thisVariable={};
if(thisVariable["thatProperty"]){
//do sth.
}
上面這行代碼,直接寫在js文件中,運行會報錯,第一個是變量未聲明,第二個是屬性未聲明。
可是,如果把這兩端代碼,放在一個函數中,則不會報錯。
function test(thisVariable){
if(thisVariable){
//do sth.
}
var thisVariable={};
if(thisVariable["thatProperty"]){
//do sth.
}
}
test();
誰能講下原因?
另外,能不能擴展地講下這方面的知識,總結一下
var申明的会预编译,初始值为undefined,放一起相当于下面的效果
var thisVariabl=undefined
var a = 10;
if (thisVariable) {//undefined相当于false,不执行语句体
//do sth.
}
thisVariable = {};
if (thisVariable["thatProperty"]) {//没有键名称就是undefined
//do sth.
}
可以看这个:
javascript判断中为假的值
javascript运行机制浅析
贴出完整的代码,js是脚本语言,不会事先检查变量是否定义,要看代码的执行顺序。
这方面的知识,建议你系统地学学javascript,市面上介绍js语法的基础书有很多,耐心读一下。
Js中在函数作用域内 加var定义的变量是局部变量,不加var定义的就成了全局变量。
就是你用的变量没有声明,直接用的话,那么这个变量就成了全局变量了,所以也不会出错的。只是结果可能不合理。
if(itsUndefined){
//上面会报错
}
if(window.itsUndefined){
//上面不会报错
}
能解释一下这个吗