JS立即执行函数

来源:互联网 发布:死而有知 其几何离 编辑:程序博客网 时间:2024/05/19 12:12
前言
  • 1.js函数声明,只是声明一个function 并不会立即执行。还需要解析函数解析才行。例如
 function test(){console.log("abc")}
2.通过错误来分析问题

wenti
- 分析: 没有预料到 “(” ,可以看到上面有两个(,一个是在function后面,一个是在尾部。上面已经讲了,function a{},是函数声明的方式,当解析到function关键字时,要求后面跟着的是一个函数名字,而现在出现的是 “(” 当然就报错了。

  • 那这样呢
    函数
    • 可以看到错误依旧,不过是没预料到 “)” 右边括号。
  • 拆分来看吧:function test(){console.log(“abc”)} 和(),前面是一个正确的函数声明,能被正常解析,而()是怎么解析的呢?
    • 常见的(a+b)*c , 可以看到括号可以来控制运算的优先级,解析到 “)”时,发现括号,中间没有内容,所以报错了,没有预料到左括号右边立马就是右括号,应该是左括号,表达式,右括号这个顺序才对。所以报错:未预料到)。
# 3.正确的实现: 把声明转换为表达式
  • 1.使用(),根据上面的经验我们可以知道,括号内部应该是表达式
    所以我们在内部放一个function 让表达式立即执行。

这里写图片描述

  • 2.使用void
    这里写图片描述
4.总结一下 括号()的作用。
  • 1.参数声明 function func(arg1,arg2){}
  • 2.作为函数调用符。 如 func();
  • 3.强制表达式运算符 ,eval解析json时。
    • 3.1扩展:圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象。
  • 4.立即执行函数表达式使用(IEFE)。
演示 eval

这里写图片描述

这里写图片描述

0 0