【问题标题】:functional programming the first variable value?函数式编程的第一个变量值?
【发布时间】:2012-09-29 15:15:30
【问题描述】:
(function() {

    var sample = "sample1";

    (function() {

        // set sample variable 
        sample = "sample2";

        (function() {

            // set sample variable
            sample = "sample3";
        }());
    }());



    console.log(sample); // "sample3"
}());

所以;样本名称@variable console.log 结果“sample3”;我如何获得第一个变量? “样品1”??

console.log(sample); // --> "sample1" ?? 

谢谢。

【问题讨论】:

  • 这里没有“第一个变量”:只有一个变量。
  • 动态变量内容,但是??所以示例@variable {{ name.tag }} ??
  • 了解作用域的工作原理...否则,您就是在浪费我们的时间。

标签: javascript


【解决方案1】:

声明你的变量而不是分配给外部变量?

var sample = "sample2";

另外,为什么

【讨论】:

    【解决方案2】:

    赋值改变你存储在变量中的值。无法恢复旧值。

    引用变量

    每当你引用一个变量时——读取或写入它,也就是说——JavaScript 将向上移动 scope chain 直到找到该名称的变量,否则它将在最顶层范围内创建它:@987654324 @,全局范围。

    声明变量

    var 在当前范围内声明一个新变量。如果您要在每个分配到sample 之前加上var,则变量将shadow 外部变量。为什么?让我们回想一下,当您引用变量时,JavaScript 会沿着作用域链向上传播。显然,它会先找到嵌套作用域中的那些,阻止它在父作用域中进一步查找。

    您的代码本质上是做什么的

    记住当你引用一个变量时会发生什么,我们可以将你的代码转换成这个,这在语义上是等效的(即它正是你的代码所做的):

    var sample = "sample1";
    sample = "sample2";
    sample = "sample3";
    console.log(sample);
    

    很明显,它会打印出sample3,而且你不能神奇地重新出现旧值。

    【讨论】:

      【解决方案3】:

      你可以在每个作用域中声明一个独立的sample变量:

      (function() {
      
          var sample = "sample1";
      
          (function() {
      
              // set sample variable 
              var sample = "sample2";
      
              (function() {
      
                  // set sample variable
                 var sample = "sample3";
              }());
          }());
      
      console.log(sample); // "sample1"
      }());
      

      Try it here.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-02-01
        • 2022-06-15
        • 1970-01-01
        • 2019-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-29
        相关资源
        最近更新 更多