在严格模式下使用javascript时,为什么这个匿名函数未定义?我理解为什么这可能有意义,但我找不到任何具体的答案.
例:
(function () {
"use strict";
this.foo = "bar"; // *this* is undefined, why?
}());
Run Code Online (Sandbox Code Playgroud)
小提琴测试:http://jsfiddle.net/Pyr5g/1/ 查看记录器(firebug).
在查看raphael或g.raphael或其他库的源代码时,我注意到开发人员做了类似这样的事情:
var val = Math.max.apply(Math, data_array);
Run Code Online (Sandbox Code Playgroud)
为什么不直接调用函数,例如:
var val = Math.max(data_array);
Run Code Online (Sandbox Code Playgroud)
谢谢.
我正在做一个小实验,试图替换嵌套div的背景颜色.
这是我打算实现的(没有内联样式):
<div style="background: #fff;">
<div style="background: #000;">
<div style="background: #fff;">
<div style="background: #000;">
and so on...
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我觉得我一定错过了一些明显的东西!我试过div:nth-of-type(2n)但这似乎只适用于一个级别.
这是用于生成div的实验,因此解决方案需要无穷无尽(不是div div div div = white的行).我知道使用JavaScript非常容易,只需要寻找纯CSS解决方案.
我试图了解下划线的invoke()功能,但在某些方面遇到了麻烦。这是带注释的源代码:
_.invoke = function(obj, method) {
var args = slice.call(arguments, 2);
var isFunc = _.isFunction(method);
return _.map(obj, function(value) {
var func = isFunc ? method : value[method];
return func == null ? func : func.apply(value, args);
});
};
Run Code Online (Sandbox Code Playgroud)
在此示例中:
_.invoke([[5, 1, 7], [3, 2, 1]], 'sort');
=> [[1, 5, 7], [1, 2, 3]]
Run Code Online (Sandbox Code Playgroud)
我了解发生了什么事;但是,在源代码中,我不了解的功能args。在哪种情况下需要使用其他参数?
我对编程也很陌生,我在为如何apply使用这里而苦苦挣扎。我猜是因为我不完全了解的使用invoke,即的使用args。仍然,在查看Mozilla文档中提供的示例时,使用了一个示例Math.max.apply(*null*, numbers),那么为什么将其应用于value源代码中?