1.4

59 阅读2分钟

闭包

Function fn1(){

Let a=1;

Function fn2(){

Document,write(a);}

Return fn2;}

Fn1()()

通过这个方式,就可以得到fn1的局部变量a的值

因为如果直接打印fn(1)会发现返回的是一个函数 document.write(a)那么既然是函数,就可以在后面加一个()来接收

过度的占用内存,产生内存消耗,导致性能变差

闭包产生的原因,一个函数内部的变量被另一个函数b引用,导致函数a执行一遍之后,里面的变量不能被销毁。导致变量一直存在于内存之中,所以函数a 的变量可以被改变。

变量提升

当下面使用var时,会出现变量提升的情况

Var a=>a=undefined(已经声明, 还是还没赋值。给了一个初始值叫undefined)

Var a=123

Let 不存在变量提升,不能在还没有初始化的时候使用变量,否则报错

Let 不能重复定义

函数是js中的一等公民

声明了function 会提升函数到最前面。页面加载的时候会先找有没有var和function如果发现有var就会把变量预定义为underfinded.如果发现有function,就会把它放最前面

常用的系统函数

Let num=12.12

12.12会被取整为12

Let num2=parseInt(num)

Console.log(num2)

把这个字符串‘12.12’转成浮点数12.12

Let num2=parseFloat(num)

Console.log(num2)

会把12.20转成12.2后面的0会去掉

Let str2=parseFloat(12.20)

Console.log(str2)

NaN not a number 表示不是一个数字

Console.log(isNaN(‘abc’-123))使用isNaN方法来判断是不是一个数字,如果不是一个数字就返回true

Function fn(){

A=1;如果在函数内部不用let或var定义,那么a就默认是全局变量。使用了var或者let就只能在函数内部使用它}

使用了return后函数会停止执行,下面的东西就不执行了

匿名函数自执行

Let src(function(){

Let a=prompt(‘输入第一个数字’);

Let b=pormpt(‘输入第二个数字’);

If(a>b){

Return ‘第一个数大’}

Else if(b>a){return ‘第二个数大’}

})

()alert(src)