一、数据类型
基本类型:`Null Boolean String Undefined Number(NB SUN)`引用类型:`Array Function Object`类型判断:typeof 返回结果`"undefined"(未定义) "boolean"(布尔值) "string"(字符串)"number"(数值) "object"(对象或者null) "funtion"(函数) `
- 拓展:堆 VS 栈(两种数据结构)
**堆:**队列优先,先进先出;由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。**栈:**先进后出;动态分配的空间 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。
- 基本类型:基本数据类型可以直接访问,他们是按照值进行分配的,存放在栈(stack)内存中的简单数据段,数据大小确定,内存空间大小可以分配。
-
引用类型:即存放在堆(heap)内存中的对象,而js不允许直接访问内存中的位置,因此操作对象时实际上是操作其引用,而不是实际对象。
引申:js中的浅拷贝与深拷贝 ——待补充
二、操作符
主要有一元,位,布尔,加,减,乘,关系,相等,条件,赋值,逗号等操作符。
- ++递增/--递减前置和后置区别?
首先要明白,前置是先计算,再赋值;后置是先赋值,再计算。(操作符在前就先计算,在后就后计算)
例如:
function a(){ var a=5; var c=a++; console.log(c); // 5, a先赋值给c,再自增
};function b(){ var a=5; var c=a++; console.log(c); // 6, a先自增,再赋值给c
};
- 数据转换(隐式和显式)
a. 显式:
Boolean(),Number(),parseInt(),parseFloat(),toString()
b. 隐式:
递增、递减(无论是前置还是后置),一元加,减,乘,求余/取模、逻辑非,关系比较,还有if等语句。
这个地方例子还蛮详细的:https://www.haorooms.com/post...
三、语句
if,for,for-in,continue,break等
- break VS continue
break: 退出整个循环; continue: 退出当前一轮循环;for循环里两都皆可用。
引申:js中的循环遍历(包括ES6) ——待补充
四、函数
- 定义函数的几种方式?
a. 函数声明:
function fn(){...}
b. 函数表达式:let fn=function(){...}
c. 构造函数方式:let fn=new Function(参数,...,函数体)