我无法理解。也许我需要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);
它正在发挥作用。
我无法理解为什么。
答案 0 :(得分:3)
Javascript函数是对象,因此您可以向它们添加属性。在这两种情况下,函数代码都有局部变量,这些变量在外部不可用。在第二种情况下,您可以向函数对象添加属性并像往常一样访问它们。
答案 1 :(得分: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';
在x
和y
的函数对象上创建属性。 x
和y
与函数内的局部变量没有任何关系。
由于您已将这些属性添加到功能对象,因此console.log(test.x)
会显示x
的值。
在评论中,您已说过:
我想将java脚本变量发送到其他页面。并且java脚本变量必须包含成员变量。我该怎么办?
如果您的意思是,您希望使用属性创建对象,则可以这样做:
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>
&#13;
答案 2 :(得分:0)
您还没有在第一种情况下设置对象属性,因为您没有获得任何值。试试返回。
console.log(test.x);
在另一种情况下,您正在设置object属性,然后调用其值以使其正常工作。
test.x = '3';
test.y = '4';
console.log(test.x);
希望这有助于你