【问题标题】:What is the difference between giving value inside function and give value out of function?在函数内赋值和在函数外赋值有什么区别?
【发布时间】:2015-03-12 06:25:38
【问题描述】:

我无法理解。也许我需要 javascript 概念。

var test = function() { var x = '3'; var y = '4'; };
console.log(test.x);

结果未定义

var test = function() { var x; var y; };

test.x = '3'; 
test.y = '4';

console.log(test.x);

它正在工作。

我不明白为什么。

【问题讨论】:

  • 这不是 JS 的工作方式。完全没有。
  • 请看Wiki,因为你给我们的例子中有很多遗漏的概念。
  • 不是javascript概念。您需要了解 OOP 概念。

标签: javascript


【解决方案1】:

Javascript 函数是对象,因此您可以向它们添加属性。在这两种情况下,函数代码都有局部变量,这些变量在外部是不可用的。在第二种情况下,您将属性添加到函数对象并照常访问它们。

【讨论】:

    【解决方案2】:

    在你的第一个例子中:

    var test = function() { var x = '3'; var y = '4'; };
    

    您正在创建一个函数,该函数声明了两个仅在函数内有意义的局部变量。由于您从未在函数对象上创建x 属性,因此console.log(test.x) 确实是undefined

    在你的第二个例子中:

    var test = function() { var x; var y; };
    

    您再次创建了在函数之外没有任何意义的局部变量。然后,与那些完全无关,你这样做:

    test.x = '3'; 
    test.y = '4';
    

    在函数对象上为xy 创建属性。 xy 与函数内部的局部变量没有任何关系。

    由于您已将这些属性添加到函数对象,console.log(test.x) 会显示 x 的值。


    在评论中,您说过:

    我想制作 java 脚本变量以发送到其他页面。并且 java 脚本变量必须包含成员变量。我该怎么办?

    如果你的意思是,你想用properties创建一个object,你可以这样做:

    var test = {x: '3', y: '4'};
    

    不需要函数,例如:

    var test = {x: '3', y: '4'};
    snippet.log(test.x); // 3
    <!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
    <script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

    【讨论】:

      【解决方案3】:

      您没有在第一种情况下设置对象属性,因此您没有获得任何价值。尝试返回。

      console.log(test.x);
      

      在另一种情况下,您正在设置对象属性,然后调用它的值以便它工作。

      test.x = '3'; 
      test.y = '4';
      
      console.log(test.x);
      

      希望对你有帮助

      【讨论】:

      • "测试变量不是对象而是函数..." 那么,函数就是 JavaScript 中的对象。
      • 我想使 java 脚本变量发送到其他页面。并且 java 脚本变量必须包含成员变量。我该怎么办?
      猜你喜欢
      • 2015-01-11
      • 2015-06-27
      • 2012-07-27
      • 2011-03-04
      • 2016-11-12
      • 1970-01-01
      • 1970-01-01
      • 2020-10-04
      • 1970-01-01
      相关资源
      最近更新 更多