为什么不'我在javascript中自制的isset函数完全可以工作
Why doesn't my homemade isset function in javascript completely work?
在一本试图说明全局/局部变量范围的书中,它用这个例子来传达这个概念:
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关键字,该变量是在全局范围内定义的,并且在执行测试函数后仍然存在。这在这里解释得更透彻。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 如何在JavaScript中将字符串转换为函数引用
- 用嵌套函数和默认函数定义函数
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- JQuery合并了keyup和focusout两个函数
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 我可以在json对象中添加一个函数吗
- AngularJS:我可以跳过函数参数回调吗
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- jquery点击函数select&取消选择
- 拨打'父亲'函数形式a'儿童'ReactJS中的组件
- Node.js v6.2.0类扩展不是函数错误
- 函数中的参数即使不是isset,仍然有效
- 为什么不'我在javascript中自制的isset函数完全可以工作
- 我的isset函数不能正常工作