javaScript 严格模式 高阶函数 闭包

2020年7月14日 作者 张舫

javaScript 除了提供正常模式外,还提供了严格模式(strict mode) . es5 的严格模式是采用具有限制性javaScript变体的一种方式,即在严格的条件下运行js代码.

严格模式在IE10以上的浏览器中才会被支持,旧版本浏览器中会被忽略,严格模式对正常的javaScript语义做了一些修改

  • 消除了javaScript语法的一些不合理,不严谨支持,减少一些怪异行为
  • 消除代码运行的一些不安全之处,班长代码运行安全
  • 调高编译效率,增加运行速度
  • 禁用了在ECMAScript的未来版本中可能会定义的一些语法,未来新版本的javaScript做好铺垫.比如一些保留字如:class enum export extends import super 不能作为变量名

开启严格模式

严格模式可以应用到整个脚本或个别函数

严格模式下注意细节

  • 严格模式下 : 变量必须先声明在使用
  • 严格模式下 : 变量不可以删除 delete num
  • 严格模式下 : 全局作用域函数指向 undefined ,普通模式下是window
  • 严格模式下 : 构造函数不可以像普通函数一样调用,因为以前this是指向window,普通调用会给window添加属性和方法, 所以必须这样调用 new Star()
  • 函数不能有重名形参
  • 函数声明必须在顶层,不允许在非函数的代码块内声明,

 

更多规则请查看 https://developer.mozilla.org/zh-CN/docs/Web/javaScript/Reference/Strict_mode

高阶函数

高阶函数是对其他函数进行的操作函数,它接收函数作为参数或将函数作为返回值输出

闭包

主要作用延伸变量作用范围

闭包(closure): 指有权访问 , 另一个函数作用域中 , 变量的函数 — JavaScript 高级设计

 

闭包小案例 面试常考

闭包小案例  延迟三秒打印所有li的内容

闭包小案例 出租车计价

闭包思考题

递归

简单递归函数

利用递归求1~n 的阶乘 1*2*3*4

利用递归求 斐波那契数列 不知道是什么东西

利用递归函数写 3级查找

 

浅拷贝 和 深度拷贝

递归就是函数自己调用自己,并加上停止条件

浅拷贝

javaScript自带浅拷贝的方法

利用递归写深拷贝