如果函数是javascript中的对象,为什么我不能访问函数作用域定义的变量?
我在代码中理解:
// variable test assigned an anonymous function
var test = function(){
var x = 5;
};
console.log(test.x); // undefined
// Even when the function is explicitly named:
function test(){
var x = 5;
}
console.log(test.x); // undefined
我不需要让这项工作或任何事情;我只需要理解为什么函数是这样的。
感谢。
答案 0 :(得分:1)
这是实现目标的一种方法:
function test() {
this.x = 5;
}
var foo = new test();
console.log(foo.x);
使用var x
而不是this.x
只声明一个局部变量
答案 1 :(得分:0)
var someName = function(){var x ...} /// only has local scope.
What is the scope of variables in JavaScript?
我会比我更好地描述它。好奇和有动力的好工作。
答案 2 :(得分:0)
函数是对象,但这并不意味着函数内声明的任何变量都成为该函数对象的属性。事实上,这将是非常糟糕的,因为你不能多次运行一个函数(因为第二次,变量将以不同的值开始)。
您可以将属性分配给函数对象,如下所示:
var test = function () {};
test.x = 5
答案 3 :(得分:0)
该变量仅在函数中可见,并且只能在函数内访问它,您可以使用全局变量,然后编辑它函数。
答案 4 :(得分:0)
您已创建局部变量。局部变量只能在函数内访问。
尝试了解Local&全局JavaScript变量
本地JavaScript变量
在JavaScript函数中声明的变量,变为函数的LOCAL。
局部变量具有局部范围:它们只能在函数内访问。
function myFunction() {
var name = "roy";
// code here can use name
}
全局JavaScript变量
在函数外声明的变量变为GLOBAL。
全局变量具有全局范围:网页上的所有脚本和函数都可以访问它。
var name = "roy";
// code here can use name
function myFunction() {
// code here can use name
}
答案 5 :(得分:0)
我相信这是因为这些变量只存在于您定义的函数范围内。超出该功能的范围,它们不存在。
它们相当于面向对象语言类中的私有成员。
或者你可以
function test() {
this.x = 5;
}
var testInstance = new test();
console.log(test.x);