JavaScript 自执行函数简述

JavaScript 自执行函数简述

1.以下代码执行输出‘点击按钮’,然后报错Uncaught TypeError: (intermediate value)(…) is
not a function,

A.输出‘点击按钮是因为’btn绑定点击事件的函数被执行,原因是点击函数后缺少了一个分号,所以

代码没有和我们预期一样执行,
a.首先代码执行到事件函数结束时候发现后面有一个括号,就调用了事件函数,将自执行函数

的函数部分当成参数传进事件函数,然后将返回值付给btn.onclick

b.再向下执行又遇到括号,则将btn.onclick当成函数来调用,发现btn.onclick不是函数类型

所以报错
var btn = document.getElementsByTagName('button')[0];
btn.onclick = function() {
        console.log('点击按钮');
}
(function() {
        console.log('自执行函数输出')
})();   

2.以下代码执行函数一报语法错误Uncaught SyntaxError: Unexpected token

(,同样是因为代码语句界限不清晰,但是如果加上括号如函数二,则不报错

A.原因是括号明确指定代码界限,其实括号在这里的作用是将函数变成能够表示这个函数的一个表

达式,因为代码执行除了声明,还有就是根据代码进运算,运算是建立在表达式和运算符上面的,

所以执行的代码都要被变成表达式或者一个值进行运算。

// 函数一
function() {
             console.log('函数一');  
}();
// 函数二
(function() {
             console.log('函数二');  
})();

3.函数三之所以没有括号包裹还能执行,是因为前面的赋值符号,会将其转化为值,所以其他一些

运算符号具备一样的功能比如!符号

// 函数三
var fn = function() {
    console.log(‘表达式函数’);
}()

// 函数四function() {
    console.log('!函数');
}();

// 函数五 + - * /
+function() {
    console.log('+函数')
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值