繁体   English   中英

函数变量未定义

[英]function variable undefined

为什么最高版本不起作用而较低功能起作用? 了解如何创建和使用对象,这让我感到困惑。 我认为这与我在顶部使用对象有关吗?

 var slot1 = { coffee: '1', tea: '2', espresso: '3' } function findItem( obj, prop ){ var item = obj + '.' + prop; console.log(item); } findItem( slot1, coffee ); function addNumbs(num1,num2){ var answer = num1+num2; console.log(answer); } addNumbs(4,3); 

没错,当我认为自己掌握了这些要诀时,我就完全被打了巴掌!

问题是在任何范围内都没有将coffee定义为变量,您可以使用obj ['coffee']的表示法将coffee作为字符串传递,以使其工作。 或者,您也可以将其称为slot1.coffee,以便您使用它。

由于这两行,较高的版本不起作用

var item = obj + '.' + prop; findItem( slot1, coffee );

检索对象aba['b']就足够了,其中a是对象而b是键

进行+'。'+ b将导致串联,而不是检索值。

在函数中,将coffee作为字符串传递,否则它将作为未定义的值传递,因为它将假定在不是

进行更改

var slot1 = {
  coffee: '1',
  tea: '2',
  espresso: '3'
}

function findItem( obj, prop ){
  var item = obj[prop];
  document.write('<pre>'+item+'</pre>')
}
findItem( slot1,'coffee' );

演示

尝试使用slot1.coffee代替咖啡

findItem( slot1, slot1.coffee );

当您在变量中具有属性名称时,请使用诸如数组myObject[property]类的对象,其中property是一个变量,其中包含要获取的对象的属性名称。

另外, coffee不用作变量,而应用作字符串"coffee"'coffee'

 var slot1 = { coffee: '1', tea: '2', espresso: '3' } function findItem( obj, prop ){ var item = obj[prop]; // You need to access object property as if object was an array when you have property name in variable. console.log(item); } findItem( slot1, 'coffee' ); // You need coffee as a string here, variable coffee was never defined function addNumbs(num1,num2){ var answer = num1+num2; console.log(answer); } addNumbs(4,3); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM