Javascript Scope undefined
Javascript Scope undefined
我对jquery网站的在线文档有问题,关于javascript范围。有代码;
(function() {
var baz = 1;
var bim = function() {
console.log( baz );
};
bar = function() {
console.log( baz );
};
})();
并说:
console.log( baz ); // baz is not defined outside of the function
我不明白的是,即使定义了baz
,为什么console.log(baz)
是未定义的。因为我认为范围是一样的。我错过了什么吗?
陷阱是IIFE
- 立即调用的函数表达式,它创建自己的作用域。
JS正在使用函数作用域
因此,baz
不是在该 IIFE 之外定义的。
change this to :
(function() {
window.baz = 1; <----
var bim = function() {
console.log( baz );
};
bar = function() {
console.log( baz );
};
})();
它会起作用。
附言
这就是jQuery将$/jQuery附加到窗口的方式(当他们完成bla bla.时)。(只是窗口.$位于其最后一行)。
我不明白的是,即使定义了 baz,为什么 console.log(baz) 是未定义的
它是未定义的,因为它的范围被限制(私有)到 IIFE(立即调用的函数表达式)范围。
如果将变量链接到 Window 对象,则可以全局访问该变量。
演示
(function() {
window.baz = 1; // Global
var pub = 2; // private
var bim = function() {
console.log( baz );
};
var bar = function() {
console.log( pub );
};
bim(); // 1 //////////
bar(); // 2 //////////
})();
console.log( baz ); // 1 //////////
console.log( pub ); // Ref.Error //
也许你处于"严格模式"?在Chrome控制台中,一切都是正确的。"baz"的调用写1
。JSFIDDLE 检查jsfiddle.net/Yjq2v/
相关文章:
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- AngularJS:ng之后,重复$scope值未按预期更新
- /undefined在我的404错误日志中多次出现
- $ionicplatform内的$scope不;不起作用
- RequireJS向模块传递配置总是返回undefined
- Angular js $scope is Undefined
- $scope is coming as undefined
- Karma+PhantomJS TypeError:undefined不是对象(正在评估scope.jjackpot)
- 将服务中的函数绑定到$scope(错误:无法设置undefined的属性'onChange')
- 错误:undefined不是对象(正在评估'$scope.inputcode.password')
- $scope.$watch(var,function) undefined 不是函数
- Javascript Scope undefined
- angular.element('#someId').scope()在IE 9中返回undefined
- Angular UI Bootstrap Modal Form Scope "undefined"
- 无法用Angular从HTML视图获取值到控制器.解决方案返回$scope变量undefined
- AngularJS $scope undefined
- 改变angularjs指令中输入的占位符,wake scope model 'undefined'
- $scope元素变成了"undefined"在被改变之后
- Angular-UI $scope.myMap is undefined
- undefined不是一个对象(评估'$scope.students.pay')