一、数据范例
基础范例:`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(参数,...,函数体)