javascript中函数定义的歧义

时间:2015-10-23 08:23:49

标签: javascript function

我是JS新手所以请耐心等待。

之间有什么区别
Rib

Rib

为什么第一个功能有效,但第二个没有?找不到合理的解释。 工作示例代码:https://jsfiddle.net/xf2u0ncL/

2 个答案:

答案 0 :(得分:0)

在你的第二段代码中,object来自哪里?!这就是整个问题。

第一个代码使用如下:

// same as getter = function (object) { return object['foo']; }
var getter = get('foo');
var value = getter({ foo: 'bar' });

get接受属性名称并返回一个接受对象并返回值的函数。你的第二个函数在任何时候都不接受任何对象,那么它应该返回什么?

答案 1 :(得分:0)

看起来你有一个尝试返回对象属性的方法。

上述两种方法都有效,但期望不同范围的变量,并且执行方式不同。

第一个方法返回第二个方法,在其中传递一个对象以从中获取属性。所以

var object = {
   foo: 'bar'
}

get('foo'); //returns 'bar';

而第二个像这样工作

object

第二个例外{{1}}是一个全局变量,或者至少在更高的范围内,因为它没有在它自己的函数中定义。

第一个方法是传递一个对象来搜索属性。第一个,虽然有点复杂,但比预期和依赖全局变量的第二个更好,更容易测试。

请参阅小提琴:http://jsfiddle.net/b327nr74/