JavaScript Function
1. 使用 Function 创建函数
var fn = new Function('a', 'b', 'return a + b');
var result = fn(, );
console.log(result); // 输出:4
将上面创建函数的方式“翻译”成常用的创建方式可以是:
var fn = function(a, b) {
return a + b;
};
var result = fn(, );
console.log(result); // 输出:4
对比一下就很好理解使用 new Function
时候所传递的参数的含义了。
2. 与常规方式创建函数的区别
var num = ;
function fn() {
var num = ;
var func = new Function('console.log(num)');
console.log(num);
func();
}
fn();
// 输出:
// 10
// 20
3. 使用场景
Function 的使用主要场景与 eval
类似,用于动态的运行代码。
如在线的代码解析器就可以配合 Function 完成。
var run = function(code, callback) {
window._callback = callback;
var fn = Function(code + ';_callback()');
fn();
};
run('console.log("动态执行的代码");', function() {
console.log('代码执行后做的事');
});
这样就可以实现简单的动态运行代码。
var number = ;
var flag = false;
console.log(number, flag);
上面这份代码在经过编译后可能会变成:
(new Function('console.log(1,!1)'))()
4. 小结
通常情况下 Function
创建的函数,在执行过程中其 this 是指向最顶层的。