JS 立即执行的函数表达式(function)写法
1. 前言
函数需要先定义,后使用。 这基本上所有编程语言的一条铁的定律。
一般状况下, 我们需要调用一个JavaScript 函数, 基本的状况都是先定义, 然后再调用。 看一个例子
- <!--by oscar999 2013-1-16-->
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Say Hello</title>
- </head>
- <body>
- <script>
- //define function
- function sayHello()
- {
- alert("hello");
- }
- //call function
- sayHello();
- </script>
- </body>
- </html>
但是如果不需要显示调用函数, 让这个函数在定义的时候就执行的话, 该如何写才可以呢?
- function sayHello()
- {
- alert("hello");
- }();
不幸的是,以上的写法会报出js 的语法错误。
===》 你可能又会想, 如果我在大括号中传入参数是否就会解析成表达式了呢?
- function sayHello()
- {
- alert("hello");
- }(1);
- function sayHello()
- {
- alert("hello");
- };
- (1);
3. 正确的写法
所以, 只要将大括号将代码(包括函数部分和在后面加上一对大括号)全部括起来就可以了。
- (function sayHello()
- {
- alert("hello");
- }());
还有一种写法也可以, 就是将后面的大括号移出来, as
- (function sayHello()
- {
- alert("hello");
- })();
推荐是使用第一种方式。
但是目前很多比较好的js library 使用的都是第二种方式。
比如: web 图形绘制的: git , draw2d ,....
4. 参考
1. http://benalman.com/news/2010/11/immediately-invoked-function-expression/
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。