今日学习内容: 
 
1.严格模式的概念 在ECMAScript5标准中,JavaScript提出了严格模式的概念         严格模式是一种具有限制性的Javascript模式,从而使代码隐式脱离了“懒散模式”         支持严格模式的浏览器在检测到代码中有严格模式时,会以更加严格的方式对代码进行检测和执行 严格模式对正常模式的JavaScript语义进行了一些限制:         严格模式通过抛出错误来消除一些原有的静默(slient)错误;         严格模式让js引擎在执行代码的时候可以进行更多的优化(不需要对一些特殊的语法进行处理);         严格模式禁用了在ECMAScript未来版本中可能会定义的一些语法。  开启严格模式:更加规范的书写js代码         1.全局的严格模式  “use strict”;         2.立即执行函数中开启严格模式  (function () {      “use strict”  })();         3.函数中开启严格模式 2.函数         函数(function):相同代码块的集合 目的:就是为了实现某一特定的功能 函数的创建方式:  数据类型  函数表达式方式创建:只能在函数的后面调用(如果使用var,存在预解析以及变量提升) 3.函数和this关系    2.事件中this指向事件的触发者    3.定时器中this指向window    4.构造函数中的this指向实例对象     5.箭头函数中this没有指向(它的this就父级的this) 4.闭包          JavaScript 变量可以是局部变量或全局变量。私有变量可以用到闭包。 ·        闭包(closure):有权访问另一个函数作用域中的变量的函数         闭包就是函数。 闭包的作用:扩展了变量的作用范围。(外部可以访问内部的变量) 结构: 外层函数的变量 + 内层函数 作用域 5.递归           函数自己调用自己,必须有结束条件  
6.浅拷贝和深拷贝的区别:  浅拷贝:只拷贝这个对象的指针,原来的对象和拷贝的对象指向的是堆内存中的同一个东西,彼此之间的操作会互相影响。 实现方式:使用jquey中的$.extend(obj2, obj1);直接赋值;Object.assign(obj2, obj1) 深拷贝:则会在堆内存中重新分配内存,拥有不同的地址,但值是一样的。 浅拷贝的方法:“=”赋值、“…”展开运算符、Object.assign() // 一层深拷贝 深拷贝: JSON.parse(JSON.stringify())、递归拷贝、var newObj = Object.create(oldObj)、第三方库lodash.clonedeep、手写深拷贝函数  
 
 
 |