【问题标题】:Javascript assignment operatorsJavascript 赋值运算符
【发布时间】: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


【解决方案1】:

赋值运算符在循环内不独占的原因是“范围”。

您已在 while 循环之外将 'value' 变量实例化为 2,因此当您更改 'value' 的值时,它会将新值分配给实例化变量。

This guide 应该会有所帮助。

【讨论】:

猜你喜欢
  • 2010-12-17
  • 2021-09-09
  • 2018-05-20
  • 2011-07-02
  • 2011-08-02
  • 2019-10-06
  • 2011-11-16
  • 2013-11-30
相关资源
最近更新 更多