如果一个对象不需要在页面中用到,
直接用var xx;
那么该对象的作用域有多大
先上代码:
app.controller('MainCtrl', function($scope) {
$scope.name = "x";
var name1 = 'xx';
$scope.foo = function() {
var name2 = 'xxx';
console.log(name1);
console.log(name2);
};
});
$scope
定义范围基本上明白了
那么name2
范围呢?在foo这个函数内?name1
的范围呢?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
变量作用域参照 js 规范说明, var 和 $scope 区别,主要就是 $scope 上的变量能被一些 watcher 检测到变化,如果有的话。
我的简单理解是,而
var
定义的变量,仅仅是当前作用域。而
$scope
是被「输出」的,比到view中,到watcher中。(问题其实有点问题,$scope.xx不是变量。)
$scope 是AngularJS自动帮你创建的对象,主要用于数据双向绑定,他的作用域是在controller或者directive控制的模板区域,简单理解是某个模板区域的数据绑定上下文,你自己通过var定义的变量作用域在当前函数内部,和$scope不是一个级别的东西,也就无所谓区别了。
Scope的定义大致如下(极简版):
在Scope外定义的内容没法watch和digest。
——————————————————————————9.25补充
楼主后来问的问题就跟angular无关了,属于变量作用域的问题。匿名函数内的定义的变量只在该函数内起作用。
详情请戳http://octsky.com/post/63/