将函数语句转换为函数表达式的方法
Ways to convert a function statement to a function expression
我一直在学习IIFE(立即调用的函数表达式),并了解一般模式及其工作原理:
(function boo(y) {
alert(y);
})(2); // call, not a grouping operator, 2
在本例中:
function body(y){
alert(y);
}(2);
(2)只是一个分组操作符,它与调用函数语句无关,它与
相同:function body(y) {
alert(y);
}
(2);
我不明白这两个函数是如何创建函数表达式而不是函数语句的:
2, function () {
alert('anonymous function);
}();
// OR
!function () {
alert('Hello World');
}();
这两个函数是如何作为表达式的?我可以看到它们是匿名函数,但我不明白它们是如何表达的?为什么要执行它们而不是抛出某种形式的语法错误?
首先,没有一个例子被称为"函数语句"。这是mozilla独有的语法区别,它看起来像函数声明,但出现在语句块中。
在本例中:
<>之前函数体(y) {警报(y);} (2);之前(2)只是一个分组运算符,与调用无关函数语句…
是的,(2)
将是一个分组操作符,因为函数声明是提升的,所以(2)
并没有真正遵循它。
…与
相同<>之前函数体(y) {警报(y);}(2);之前
是,空格被忽略。
我不明白这两个函数是如何创建函数表达式而不是函数语句的:
<>之前2、function () {alert('匿名函数);} ();之前//OR
<>之前function () {警报("Hello World");} ();之前
它们是表达式,因为存在需要对其操作数使用表达式的操作符。这样,函数就成为操作数,因此作为所需的表达式求值。
所以这仅仅是当程序被解析时,遇到!
,它知道接下来的一定是一个表达式,所以当它计算之后的function () {...
时,它认为这是一个有效的表达式,并将其解释为
相关文章:
- 如何确保函数/方法参数为certian类型
- Javascript中对象中的函数方法
- Object.assign(),函数方法和内存使用
- 我应该在原型上还是在新创建的实例上调用构造函数方法
- Angular promise回调不是在构造函数方法内部触发,而是在对象文本方法中触发
- 如何使用 Karma、Jasmine 和 Istanbul 指定测试应涵盖哪些函数/方法
- 在ES2015中定义一个类,构造函数方法是什么以及为什么它是必不可少的
- 如何调用通过它传递不同 ID 的函数方法
- Sencha ExtJs 为什么从“构造函数”方法返回“this”
- 这个 JavaScript 函数方法调用了什么
- 如何在 javascript 中从子原型调用父类的构造函数方法
- 是否仍可访问被覆盖的函数/方法
- 在构造函数之外更改 JavaScript 中的构造函数方法
- 这种实例化构造函数方法的风格是什么
- 如何在 JavaScript 中使用继承与构造函数方法一起使用 返回具有私有属性的对象文本
- 我的javascript构造函数方法以文本形式返回整个方法,而不是预期的返回值
- 如何在事件中将变量传递给构造函数方法
- 如何限制用户在ui ace编辑器中只能编写一个javascript函数(方法)
- 打印任何java应用程序的函数/方法调用序列
- 如何在jQuery语句中使用Javascript构造函数方法