1.浏览器
浏览器内核分为渲染引擎和JS引擎
CSS和DOM是通过渲染引擎在网页上显示的。
JS代码就是通过JS引擎进行解释执行的,所以js也是解释型语言。
2.数据的存储方式
在js内定义变量有两种方式var和let,而const是用来定义常量的,可为什么大多数定义都是const呢?
在内存中存储数据存储方式分为栈和堆,简单数据类型就是存储在栈中,复杂数据类型则是在堆。
用let定义的数据就是在栈中开辟一个空间,将数据存在这个空间中,如let t=123。
这里的t是简单数据类型number,像其他简单数据类型都是这样存储的。
复杂数据类型如object,array等都是在栈中存储的是地址,真正存放数据的是堆。定义数组goods=[1,2,3,4],它在内存是这样存放的:
定义的数组,对象等类型的数据都是通过在栈中存放指向堆中数据的地址 ,所以当通过push(),pop()等改变数组的数据其实是改变堆中的数据,而栈中存放的地址没有改变。
所以大多数情况下定义对象,数组都是用const定义。还有一种情况:
const arr=[1,2,3,4]
arr=[5,6,7]
此时就会报错,因为这里已经给arr重新赋值了,改变了栈中的存放的地址,并在堆中生成新的数据。
总之,const>let>var,遇到报错的就改
3.字符串
模板字符串(ES6)
let t='吃了肉'
console.log(`今天睡了懒觉,${t}`)
ES6新标准,用反引号输出是,想要拼接变量时,用${}包含住变量即可。
4.函数
立即执行函数两种方式:
第一种:(function(){}())
第二种:(function(){})()
当有多个立即执行函数时,需要在上一个的末尾加分号';'
5.对象
查找对象
第一种:对象名.属性名
第二种:对象名['属性名'](当属性名含有’-‘或者字符串时使用)
遍历对象
let t={title:'数学',total:'30',time:'周三'}
for (const key in t) {
console.log(t[key]);
}
for in遍历时key时字符型,所以不能用来遍历数组 。