Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用f替换js函数关键字_Javascript_Jquery - Fatal编程技术网

Javascript 用f替换js函数关键字

Javascript 用f替换js函数关键字,javascript,jquery,Javascript,Jquery,我想知道是否有可能采取以下措施: var f = function; 然后使用f就像使用jsfunction关键字一样 如果这样做是可能的,我会用它来最小化js代码,因为我的代码中有很多函数,不可能像你描述的那样 我能想到的最接近的方法是创建一个用于生成函数的函数,使用eval解析传递的字符串。然而,使用eval通常是有害的,应该避免使用。总的来说,我不建议做这样的事情 另外,值得注意的是,做您想做的事情没有什么意义,因为通过网络发送的javascript应该首先被压缩,因此单词函数将由一个标

我想知道是否有可能采取以下措施:

var f = function;
然后使用
f
就像使用js
function
关键字一样


如果这样做是可能的,我会用它来最小化js代码,因为我的代码中有很多函数,不可能像你描述的那样

我能想到的最接近的方法是创建一个用于生成函数的函数,使用eval解析传递的字符串。然而,使用eval通常是有害的,应该避免使用。总的来说,我不建议做这样的事情

另外,值得注意的是,做您想做的事情没有什么意义,因为通过网络发送的javascript应该首先被压缩,因此单词函数将由一个标记表示,不管单词有多长

如果您希望源代码更具可读性和简洁性,我建议您使用coffee脚本,它可以编译为javascript,并允许您定义函数,而无需使用函数的第一个字母。查克·诺里斯会同意的

结论和建议摘要
  • 使用coffee脚本获取无积垢源代码
  • 将其编译为您从未见过的详细javascript
  • 缩小javascript(uglify是一个伟大的压缩器,或者说谷歌的关闭)
  • gzip it(可以很好地压缩重复的字符串)
  • 发送它

这里的关键问题是,在gzip之后,单词
函数的大小变得无关紧要,因此剩下的唯一问题是源代码的可读性。

是的……老实说,我不担心尝试将function关键字缩短为'f',这对您的工作影响很小,而且还会损害代码的可读性。而且,除非你有一百万个函数,否则我不会把重点放在这上面。正如@prodigitalson所说的那样——通过一个小型过滤器运行它。这应该考虑到代码中可能存在的真正的小型化,并且仍然保持代码库的可读性(这比节省几个字节更重要)


此外,根据我的评论,有一些东西(可能)正在取代冗长的“function”关键字(Brendan Eich说过他会考虑改变的东西——你必须记住,他在10天左右设计了这种语言)。在这里阅读更多信息:当然,这类事情总是可以改变的……但是标准定义机构正在关注它。

与Pointy在评论中指出的类似,您可以使用函数构造函数创建新函数并将其作为字符串传递。换言之:

function f(s) { return new Function(s) };
var foo = f('var s = "hello"; return s');
alert(foo()); //=> "hello"
不过,我认为这是没有必要的

编辑:要添加参数,可以使用
参数
对象

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');

您可以使用

的hygenic宏功能来实现这一点,这可能会有所帮助:您是否通过实际的迷你程序运行了上述代码???当Chuck Norris声明函数时,他只写了第一个字母。您可能会很高兴听到负责提供ES6的小组批准的JavaScript胖箭头语法。如果你想参加某种编程竞赛,这是“可能的”:你可以在
函数
构造函数中使用别名“f”,但是你的所有函数都必须用字符串表示,这是一种痛苦。你如何将参数传递给你创建的函数?令人印象深刻。两者都显示了您的javascript知识,并重申不应该做类似的事情。哈哈,同意。这是一个概念证明,它比其他任何东西都重要,我肯定不会在生产中使用它,但知道您是否需要编写解析器非常有用,例如,
eval
new Function
都是必要的缺点。我想写一个这样的概念证明,但无法考虑如何动态处理参数