为什么不'我在javascript中自制的isset函数完全可以工作

Why doesn't my homemade isset function in javascript completely work?

本文关键字:isset 函数 工作 完全可以 我在 javascript 为什么不      更新时间:2023-09-26

在一本试图说明全局/局部变量范围的书中,它用这个例子来传达这个概念:

test();
if (isset(bar)){ 
    alert('bar must be global!');
}else{
    alert('bar must be local!');
}
function test(){
   var foo = 3;
   bar = 5;
}

function isset(varname){
    return typeof varname != 'undefined';
}

现在if返回警报"bar必须是全局的",这是有意义的,因为在这种情况下,传递给isset()的变量bar是全局的。但是为什么if语句不返回警报("o必须是本地的");当你通过时,比如说当你通过foo在isset函数中。

"bar"没有在函数test()中的任何位置声明。然后Javascript假设它是一个全局变量。

为了确保你不会犯这些错误,我可以建议你使用:吗

"use strict";

把那一行放在文件的开头。它将防止许多错误,如这里所示:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode

它将防止未声明的变量充当全局变量

由于您没有使用var关键字,该变量是在全局范围内定义的,并且在执行测试函数后仍然存在。这在这里解释得更透彻。