我想知道是否可以做类似的事情:
var f = function;
而不是使用f
,就像js function
关键字
如果这样的话可能会用到js代码最小化,因为我的代码中有很多功能
答案 0 :(得分:3)
与Pointy在评论中指出的类似,你可以做的是使用函数构造函数创建一个新函数并将其作为字符串传递。换句话说:
function f(s) { return new Function(s) };
var foo = f('var s = "hello"; return s');
alert(foo()); //=> "hello"
但是,我认为这是不必要的。
修改:要添加参数,您需要使用arguments
对象。
function f() {
var args = Array.prototype.slice.call(arguments);
var func = args.pop();
return new Function(args.join(','), func);
}
var add = f('a,b', 'return a + b');
答案 1 :(得分:2)
无法按照您的描述进行操作。
我能想到的最接近的是创建一个函数来生成函数,使用eval来解析传递的字符串。然而,使用eval通常是邪恶的,应该避免。总的来说,我不建议做这样的事情。
另外,值得注意的是,做你想做的事情没什么意义,因为通过线路发送的javascript应该先被压缩,所以word函数将由一个令牌表示,无论这个词有多长是
如果您希望您的源代码更具可读性和简洁性,我建议使用编译为javascript的咖啡脚本,并允许您在不使用第一个函数的情况下定义函数。查克诺里斯会批准!
这里的关键问题是,在对其进行gzip压缩后,单词function
的大小变得无关紧要,因此唯一剩下的问题是源代码的可读性。
答案 2 :(得分:1)
是的...说实话,我不会担心尝试将函数关键字缩短为'f',这会让你的工作回报很少,这也会损害你的代码的可读性。而且,除非你有类似百万功能的东西,否则我不会专注于此。正如@prodigitalson所说 - 通过一个缩小器来运行它。这应该照顾代码中可能存在的真正缩小,并且仍然保持代码库的可读性(这比保存几个字节更重要)。
另外,根据我的评论,有一些东西(可能)正在替换长'function'关键字(Brendan Eich已经说过他会考虑改变 - 你必须记住他在10天内设计了这种语言)或者)。在这里阅读更多相关信息:Fat Arrow Syntax当然,这些事情总是会改变......但标准定义机构正在研究它。
答案 3 :(得分:0)
您可以使用http://sweetjs.org/
的hygenic宏功能执行此操作