繁体   English   中英

:和=与javascript函数之间的区别

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM