var jem = 55;
var app = angular.module("store",[]);
app.controller("storeController",function(){
this.product = jem;
});
jem = 0;
<!DOCTYPE html>
<html ng-app="store">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular.min.js"></script>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body ng-controller="storeController as store">
<p>{{"HI"}}</p>
<p>{{store.product}} </p>
</body>
</html>
为什么此输出为“0”而不是“55”?由于jem是一个基本的javascript变量,当产品被分配了jem时,它的值被复制了,当jem被更改时不应该改变吗?
答案 0 :(得分:3)
请注意,您的控制器定义位于回调函数内(因为它应该是......)
app.controller("storeController", function(){
this.product = jem;
});
与您的问题相关的副作用是,回调中的赋值语句this.product = jem
将在回调之后的赋值语句jem = 0
之后执行。
需要注意的是,回调不会与其余代码顺序进行。