【发布时间】:2017-04-12 09:17:20
【问题描述】:
祝 SOF 的人们好,我是这个论坛的新手,而且我正在学习如何编写 javascript 代码。我的问题是赋值运算符如何真正工作?我知道(例如 *= )
var (nameOfVariable)=(value)
nameOfVariable*=(some value)
是:
nameOfVariable= nameOfVariable * (some value) == value*(some value)
现在举例:
var value=2;
console.log(value*=2); == 4
所以每 n 次我在 console.log() 中输入 (value*=2),它给了我 (value * 2^n) 的含义,
var value=2;
console.log(value*=2); == 4 (1st time)
console.log(value*=2); == 8 (2nd time)
console.log(value*=2); == 2 * (2^n) == 16 (nth time)
我在一个while循环中进行了实验,结果是这样的:
var value=2; | (Console gave me this)
while(value<=10){ | 2
console.log(value); | 4
value*=2; } | 8
console.log(value); | 16
为什么“while”循环内的括号中的赋值运算符不是独占的?为什么它会影响外部变量?这是否意味着每次在 console.log() 中写入 n 次赋值运算符中涉及的变量时,在我的情况下它会返回值 2^n(value)?我希望对此有所启发,因为我知道掌握编程意味着掌握基础知识本身。
【问题讨论】:
-
它是循环内部的相同变量(这根本不是闭包)和外部
-
while 循环不是闭包;这是一个构造。那里没有专门的范围 - 适用于函数,而不是循环。
-
具有讽刺意味的是,如果有一个真正的闭包,您会看到相同的行为,因为变量
value将被封闭 -
哦,我的错,那是无意的 :) 我在想那些大括号 {} 而不是闭包本身。我从 2 天前开始学习 JS,这就是为什么我必须学习一堆 JS 概念。编辑是良药:D.
标签: javascript