发表于: 2017-06-13 22:06:07

1 1170


今日所做:

1.学习一下函数表达式,函数声明,闭包等的基础知识

2.两种函数定义想要达到立即执行效果的区别:

实际上来说在函数后面直接加()不是都可以立即执行的,函数定义分为

函数声明和函数表达式,函数声明的时候会产生声明提前,函数表达式不会;

那么想要立即让函数执行,实际上只能是在函数表达式后面加()才可以,

而且是这种函数表达式var a=function(){}()不能是匿名函数表达式

function(){}()这种会报错,提示函数未赋值,但是!但是!但是!

除了最正归的写法,换一些其他的写法还是可以让这几种函数定义都立即执行

,最简单的就是在函数声明的前面加上!、+、-、=等等符号,例如 +function(){}()

这样就会立即执行了,这是因为在函数声明前面加了符号,js解析器就解析不出来了,

它就不知道它是个函数声明了,同理,在把函数整体包裹在括号里就更可以立即执行了,

()的另一个好处是不会对值产生不想要的改变,所以一般都会用();

3.

 +function (){
console.log(333)
}()/*333*/
!function aa(){
console.log(555);
}()/**555/

类似于上图,这种情况下直接加()都是可以立即执行的

4.使用立即执行的一个好处在于可以在里面定义函数,这些定义的函数在全局作用域中

访问不到,可以起到不污染全局作用域的效果

明日计划:

继续学习一下函数部分的基础知识

遇到的问题:

把变量放在立即执行的函数中定义,使得从外部访问不到函数中的变量,这样既保护了函数

又不会污染全局作用域,但是这些定义的变量不是也没法去使用了吗

今日收获:

对函数的基础知识有了更加深入的了解


返回列表 返回列表
评论

    分享到