函数变量undefined

时间:2016-06-12 03:39:31

标签: javascript jquery

为什么顶级版本不起作用而较低的功能有效?了解如何创建和使用对象,这让我感到困惑。我假设它与我在顶部使用对象的事实有关吗?

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);

当我认为我掌握它时,我完全被打了一巴掌!

4 个答案:

答案 0 :(得分:2)

问题是咖啡没有在任何范围内定义为变量,你可以使用obj ['coffee']的符号将咖啡作为字符串传递,以使其起作用。或者您可以将其称为slot1.coffee,以便您获得它。

答案 1 :(得分:2)

由于这两行,上层版本不起作用

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

当检索对象a.ba['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' );

DEMO

答案 2 :(得分:1)

尝试使用slot1.coffee代替咖啡

findItem( slot1, slot1.coffee );

答案 3 :(得分:1)

当你在一个变量使用对象中拥有属性名称时,如数组myObject[property]其中property是一个变量,其中包含object属性的名称,你想得到它的值。

此外,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);