[英]Difference Between : and = with javascript function
我有两个看起来彼此相同的JavaScript代码。
第一个类似下面的结果,即连续2、101、102。
<script>
var val = 100;
var counter = {
val : 1,
func1 : function() {
this.val += 1;
alert('func1() this.val: ' + this.val);
func2 = function() {
this.val += 1;
alert('func2() this.val: ' + this.val);
func3 = function() {
this.val += 1;
alert('func3() this.val: ' + this.val);
};
func3();
};
func2();
}
};
counter.func1();
</script>
下面的代码是第二个。 结果是2,3,4
<script>
var val = 100;
var counter = function() {
val = 1;
func1 = function() {
this.val += 1;
alert('func1() this.val: ' + this.val);
func2 = function() {
this.val += 1;
alert('func2() this.val: ' + this.val);
func3 = function() {
this.val += 1;
alert('func3() this.val: ' + this.val);
};
func3();
};
func2();
};
func1();
};
counter();
</script>
问:仅在我看来,这种差异来自标记:=。 那正确吗?
问:从技术上讲,这种差异与词汇环境有关吗?
问:这两个商标的范围或结局是否应有差异?
问:如果以上问题不是原因,那么可能是什么原因?
在第一个代码段中, var val = 100;
将变量定义为global,其值为100
。 val : 1,
在counter
对象内部定义了一个名为val
的属性。
在第二个片段中, val = 1;
定义全局变量val
的值1
的分配。
因此,结果是不同的是正常的:这是关于variable scope
的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.