答:变量与常量都是标识符,命名规则一致,变量定义可以现在声明,再赋值,也可以声明的时候初始化赋值,在ES6中新增了let关键字来声明变量,作用与var相似,但其所声明的变量只在声明所在块内有效,ES6标准中引入了新的关键字const来定义常量,常量一经定义不能更改。
变量定义:
let user;//只声明console.log(user);//undefinedlet user="zhanghsan"; //变量定义user="lisi";//可以更改
常量定义:
const APP='php递归学习';APP="重新赋值";//会报错
答:函数定义:
function functionName(){console.log('ok');}
声明会自动提升,无论在其实定义前后调用都不会出错functionName();
匿名函数定义:
let getName=function(){console.log('okay');}
声明不会自动提升,只能在其后调用:getName();
答:箭头函数是用来简化匿名函数的声明的,参数特征:
如果函数体只有一条语句,则return 可省了
如果只有一个参数则小括号可省略
如果没有参数,小括号保留:
答:闭包是能够访问自由变量的函数,理论上都是闭包函数。
自由变量:既不是函数的参数变量,也不是函数内部定义的私有变量,存在于函数调用的上下文中,伴随着函数调用的全程,具有相对性。
demo1:
let name="自由变量";function wrap(a,b){let c=1;return (a+b+c)+name;}
demo2:利用闭包访问私有变量
函数的私有变量做自由变量:
function wrapF(){let wr="私有";//自由变量return function(){return "访问私有变量的闭包:"+wr;}}
html页面:
<button id="clickMe">点击测试</button>
demo1:
document.getElementById('clickMe').addEventListener("click",hello);//回到函数调用function hello(){alert("hello world!");}demo2:function numCompare(a,b){return a-b;}let num=new Array(1,2,3,4);sortNum=num.sort(numCompare);//回到函数调用
2。偏函数:
函数的参数,一部分由自己定义处理,另一部分交由它之中子函数(一般是匿名函数)处理:
简化了声明和调用
let xyz=function(a,b){return function(c,d){return a+b+c+d;}}//外层参数定义:let am1=[1,2],am2=[3,4];xyz(...am1)(...am2)
柯里化:
let laypar=function (a){return function(b){return function(c){return function(d){return a+b+c+d;}}}}laypar(10)(20)(30)(40)//简化了调用参数#### 纯函数:完全独立于上下文,返回值只受传入参数影响;function sum(a,b){return a+b;}
箭头函数:
匿名函数
let nonF=function(a,b){return a+b;}
简化匿名函数的声明
nonF=(a,b)=>{return a+b;}
如果函数体只有一条语句,则return 可省了
nonF=(a,b)=>a+b;
如果只有一个参数则小括号可省略
nonF=a=>a+b;
如果没有参数,小括号保留:
nonF=()=>console.log('not fail');
箭头函数没有原型属性prototype,不能当构造函数使用.
箭头函数的this始终和它的上下文绑定
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号