加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 教程 > 正文

js 马上调用的函数表达式如何写

发布时间:2023-09-16 14:41:40 所属栏目:教程 来源:
导读:如果不需要显示调用函数, 让这个函数在定义的时候就执行的话, 该如何写才可以呢,接下来将详细介绍实现步骤,感兴趣的朋友可以了解下

1.前言

函数需要先定义,后使用。 这基本上所有编程语言的一条铁的定律
如果不需要显示调用函数, 让这个函数在定义的时候就执行的话, 该如何写才可以呢,接下来将详细介绍实现步骤,感兴趣的朋友可以了解下
 
1.前言
 
函数需要先定义,后使用。 这基本上所有编程语言的一条铁的定律。
 
一般状况下, 我们需要调用一个JavaScript 函数, 基本的状况都是先定义, 然后再调用。 看一个例子
 
代码如下:
 
代码如下:
 
<!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>
 
但是如果不需要显示调用函数, 让这个函数在定义的时候就执行的话, 该如何写才可以呢?
 
2.思考的历程
 
从以上的例子来看,聪明的你结合以上的使用状况可能会想:
 
===》既然调用的时候是在函数名后面加上一对 是否在function 定义的后面加上一对大括号是否就可以执行了呢? 像以下这样:
 
代码如下:
 
代码如下:
 
function sayHello()
 
{
 
alert("hello");
 
}();
 
不幸的是,以上的写法会报出js 的语法错误。
 
因为Javascript 的解析器在解析器解析全局的function或者function内部function关键字的时候, 默认会把大括号解析成function声明,而不是function表达式。
 
也就是说, 会把最后的一对大括号默认解析成一个缺少名字的function,并且抛出一个语法错误信息,因为function声明需要一个名字。
 
===》 你可能又会想, 如果我在大括号中传入参数是否就会解析成表达式了呢?
 
代码如下:
 
代码如下:
 
function sayHello()
 
{
 
alert("hello");
 
}(1);
 
的确, 错误是没有了。 但是以上的写法等同于以下写法的效果
 
代码如下:
 
代码如下:
 
function sayHello()
 
{
 
alert("hello");
 
};
 
(1);
 
这两句完全没有关系, 函数还是不会执行
 
3.正确的写法
 
对于JavaScript 来说,括弧()里面不能包含语句,所以在这一点上,解析器在解析function关键字的时候,会将相应的代码解析成function表达式,而不是function声明所以,只要将大括号将代码(包括函数部分和在后面加上一对大括号)全部括起来就可以了。
 
代码如下:
 
代码如下:
 
(function sayHello()
 
{
 
alert("hello");
 
}());
 
还有一种写法也可以, 就是将后面的大括号移出来, as
 
代码如下:
 
代码如下:
 
(function sayHello()
 
{
 
alert("hello");
 
})();
 
推荐是使用第一种方式。
 
但是目前很多比较好的js library 使用的都是第二种方式。
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章