JavaScript复习笔记

1.

比较运算符
<
==
<=
>=
==
===
!=
!==
逻辑运算符
&&
||
条件语句
if (...) {}
if (...) {} else  {}
if (...) else if (...) {} else {}
switch(...) { case :xxx;break; default:break; }
循环语句
for (;;) {}
for (xx in xxx) {}

2.①JavaScript基本数据类型按值传递,对象类型按共享传递,也叫按对象传递、按对象共享传递。

该策略重点:调用函数传参时,函数接收对象实参引用的副本(既不是按值传递,也不是按引用传递),它和引用传递最大的区别在于:在共享传递的过程中,对实参赋值不会影响实参的值。

经典面试题:

function func(o) {
  o.name = "yimao"
  o = 100
} 
let obj = new Object();
func(obj);
console.log(obj); // obj

 为什么会打印【object,object】?

在函数接收对象的实参和形参一个地址,但是当实参被赋值的时候,他的指向就被改变。他和引用传递最大的区别就是,在共享传递中对形参的赋值,不会影响到实参的值。

 

②typeof操作符返回一个字符串

类型

undefined
null
boolean
number
bigint(ECMAScript 2020新增)
string
symbol(ECMAScript  2015新增)
宿主对象
function
object

tips:BigInt提供一种方法来表示大于2^{53}-1的整数,这原本是JavaScript中可以用Number表示的最大的数字。BigInt可以表示任意大的整数。

3.函数表达式跟函数类似,他们有相同的语法。一个函数表达式可能是一个更大表达式的一部分。函数表达式不会提升,所以不能在定义之前调用。

var myFunction = function name([param[, param[, ... param]]]) { statements }

4.作用域是代码在运行时某些特性部分中变量函数的可访问性。换句话说,作用域决定了变量和其他资源的可见性。作用域作用就是隔离变量,防止变量污染。

ES6之前没有块级作用域,只有全局作用域和函数作用域。ES6的块级作用域可用新增命令        let和const来体现。

作用域链:当一个变量在当前作用域没有找到的时候,会从当前作用域定义的父级作用域去寻找。这一层一层的关系,就是作用域链。

注意:要到创建这个函数的域。作用域中取值,这里强调的是创建,而不是调用!

5.执行上下文和作用域:

许多开发人员混淆执行上下文和作用域的关系,误以为是相同概念,实际上不是。

执行上下文是可执行代码解析之前的必要准备工作。

JavaScript是解释型语言,JavaScript执行分为两个阶段:

①解释阶段:

Ⅰ词法分析

Ⅱ语法分析

Ⅲ作用域规则确定

②执行阶段:

Ⅰ创建执行上下文

Ⅱ执行函数代码

Ⅲ垃圾回收

执行上下文是一个抽象概念,我们可以把它当作一个对象,里面包含一些内容:

变量对象

每个执行环境文都有一个变量对象,全局环境的变量对象一直存在,函数的变量对象只有函数执行的时候才会存在。在函数调用执行之前,JS会将用当前函数的参数初始化变量对象,并将当前执行上下文进行相关联,函数代码块声明的变量和函数也会添加到变量对象上面。

活动对象

函数执行之后产生的变量对象就是活动对象,他们是同一个概念,只不过状态不同而已。

作用链域

如上。由多个执行上下文的变量对象构成的链表叫做作用链域。

调用者信息

如果当前函数被当作对象方法或者bind,call等API委托调用,则将当前代码快的调用者信息存入执行上下文,否则,将作为全局对象调用。

6.立即执行函数,就是声明之后立马执行,所以没有必要给这类函数命名,可以使用匿名函数,作用就是做一些封装,防止变量全局污染,以及保证内部变量的安全。

7.闭包就是有权访问另一个函数作用域的函数。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值