严格模式下的语法

严格模式的语法

1.在执行代码前面输入以下代码

' use strict'

2.严格模式和普通模式的一些区别

(1).变量的使用必须先声明才能使用
(2).不能随意删除已经声明好的变量
(3).全局作用域下的this空值
(4).构造函数不加 new 调用 this 会为空,赋值会报错
(5).定时器下的 this 没有变化  还是指向 window
(6).函数不能有重名的参数
(7).不允许在非函数的代码块内声明函数  (只允许在函数里面声明另一个函数)

2.闭包

语法定义:    闭包是指有权访问另一个函数作用域中变量的
函数.------JavaScript高级程序设计
主要作用:  延申了变量的作用范围
(1). 函数内部可以使用全部变量
(2).函数外部不可以使用局部变量
(3).当函数执行完毕,本作用域内的局部变量会销毁.
(4).立即执行函数被称为一种小闭包
(5).因为闭包存在的变量(不是函数里面的)在程序运行完成后是不会被销毁的
这就是内存泄漏,开辟大量无意义的内存空间.

3.递归
定义: 一个函数在内部可以调用本身的,这个函数就是递归函数
容易法生 “栈溢出” 的错误 一定要加退出条件 return
基本是和循环一样的
(1).在递归里,每一次自己调用自己,都要返回值给自己,不停的返回给自己;但是这样会
形成" 栈溢出",所以给一个if判断,当达到某种条件的时候,就不再返回了
(2)递归函数的一些基本应用 : (1)求 1-n 的阶乘 (2)求兔子数列
(3)可以获取更深层的数据;比如一个对象里面有两个方法,其中一个方法里面又包含
一个对象;那么就可以获取这个方法里的对象里的数据; 本质就是调用同一个函数
改变传入的参数,来达到目的; 还有就是把获取到的数据赋给一个空对象,再返回这个
空对象;
如:

在这里插入图片描述

4. 拷贝

(1)浅拷贝只是拷贝一层,更深层对象级别的拷贝只是拷贝地址
如果原地址改变了,拷贝后的的对象也会发生改变

(2)深拷贝是拷贝多层, 每一层级别的数据都会拷贝
就算原目标改变了,拷贝后的对象也不会发生改变

语法:   (1),简单的语法:运用for( var k in obj) {
k 是属性名  obj[k]   是属性值
                      }

(2).ES6 新增的语法糖

语法:(1).浅拷贝 assig
     针对深拷贝,需要使用其他办法,因为
```javascript
 Object.assign()拷贝的是属性值。假如源对象的属性值是
一个对象的引用,那么它也只指向那个引用。
  Object.assign(o,obj);

这个方法也可以用来合并多个对象

o是拷贝后对象
obj 拷贝目标
***总结:***  深拷贝和浅拷贝地区别是:  在拷贝复杂数据
类型的时候,浅拷贝只是引用,而深拷贝是重新赋值一次

*****注意:***  在默认情况下,深浅拷贝并没有太大的区别
只有在遇见对象类的数据才会出问题

这是一种比较垃圾的一种深拷贝的方法:

在这里插入图片描述

原理就是利用获取属性和属性值的方法 再利用递归的深层获取数据
来达到深拷贝的目的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值