Javascript 为什么在使用选项对象时x未定义
为什么这里没有定义Javascript 为什么在使用选项对象时x未定义,javascript,object,parameters,undefined,Javascript,Object,Parameters,Undefined,为什么这里没有定义x?options对象定义它们,然后将x作为参数传递给函数foo() var选项={x:4,y:3}; foo(期权); 函数foo(){ 控制台日志(x); } console.log(options.y)您需要在foo函数中传递选项参数 var选项={x:4,y:3}; foo(期权); 函数foo(选项){ console.log(options.x); } console.log(options.y)您可以使用选项从关闭 var选项={x:4,y:3}; foo(
x
?options对象定义它们,然后将x
作为参数传递给函数foo()
var选项={x:4,y:3};
foo(期权);
函数foo(){
控制台日志(x);
}
console.log(options.y)代码>您需要在foo函数中传递选项参数
var选项={x:4,y:3};
foo(期权);
函数foo(选项){
console.log(options.x);
}
console.log(options.y)代码>您可以使用选项
从关闭
var选项={x:4,y:3};
foo(期权);
函数foo(){
console.log(options.x);
}
console.log(options.y)因为foo()
中没有可用的x
。您需要有一个参数。您可以使用。
var选项={x:4,y:3};
foo(期权);
函数foo({x,y}){
控制台日志(x);
}
console.log(options.y)代码>因为
您不能在foo函数中传递param
。因此,请在函数中传递param函数foo(param)
而且x
不是变量。其对象键因此调用option.x
否则它仍然是未定义的
option.y
有效。因为您直接调用对象键
var选项={x:4,y:3};
foo(期权);
函数foo(param){
console.log(param.x);
}
console.log(options.y)代码>虽然函数可以访问闭包中的值,但在foo的封闭闭包中没有定义x。但是,您可以使用options.x
访问它,因为选项是在闭包中定义的
var选项={x:4,y:3};
foo(期权);
函数foo(){
console.log(options.x);
}
console.log(options.y)
x
未定义,因为您没有将其作为参数传递给函数,并且x在父作用域中也不可用
您必须在函数的参数列表中声明它。您还可以传递整个对象,如函数bar
所示。或者您也可以在参数列表中传递完整对象和destructure以访问其属性,如函数baz
所示:
constoptions={x:4,y:3};
函数foo(x){
控制台日志(x);
}
功能条(arg){
console.log(arg.x,arg.y);
}
函数baz({x,y}){
控制台日志(x,y);
}
foo(options.x);
foo(options.y);
酒吧(选择);
baz(期权)代码>谢谢!当我测试代码时,即使我没有在函数foo()中包含options
,它也能工作代码>。是否有理由将options
放在两个函数调用foo(选项)中
和函数function foo(options){}
?由于闭包,您可以访问options
并访问它,但是闭包中没有任何名称x
,因此您得到了错误x在javascript中没有定义有一个称为纯函数的概念。。尝试用这种方式编写函数。若你们这样写的话,你们可以有更可预测的行为…对于闭包部分+1.