我在stackoverflow上的第一篇文章!!!
我不确定为什么我的function()在for循环中的if(statment)中不起作用...
我理解它的方法。我可以在第一个匿名函数中添加一个var answer和console.log,但我想知道为什么函数不能正常工作......帮助!
我一直在学习bind,call,apply,并想创建这个例子来尝试它并偶然发现了这个问题。
var fruits = [];
var Fruit = function(name, color, quantity) {
this.name = name;
this.color = color;
this.quantity = quantity;
};
addFruit = function(name, color, quantity) {
fruits.push(new Fruit(name, color, quantity));
}
// filled fruits[] with objects.
addFruit("strawberry", "red", 20);
addFruit("watermelon", "green", 5);
addFruit("orange", "orange", 10);
// trying to console.log "an" instead of "a" because it preceeds "orange"
var greet = function() {
var vowels = "aeiou";
for (var i = 0; i < vowels.length; i++) {
if (this.name.charAt(0) === vowels.charAt(i)) {
// here is where this function does not work...
function() {
console.log("I am an " + this.name);
};
break;
}
else {
function() {console.log("I am a " + this.name)}
}
}
}
greet.call(fruits[2])
答案 0 :(得分:0)
您定义一个函数:
function() {
console.log("I am an " + this.name);
};
但你永远不会调用这个功能。由于它是匿名的,因此在定义之后你无法引用它。因此,您必须直接在该定义中调用它:
(function() {
console.log("I am an " + this.name);
})();
这有点愚蠢,因为函数只是对事物做了然后超出了范围。你也可以直接做一件事:
console.log("I am an " + this.name);
根本不需要匿名或其他功能。