1. 浏览器内核
webkit: safari 曾经的 chrome
presto(变): opera,后来加入谷歌阵营
trident(三叉戟): ie
blink(闪亮): chrome
gecko(壁虎): firefox
详见:浏览器内核与js引擎
五大流浏览器内核及其代表
2. JavaScript 的 typeof 返回哪些数据类型?
首先知道,js数据类型分为:基础数据类型和引用数据类型。
基础数据类型:Number , String , Boolean , Null , Undefined , Symbol
( 此括号内为 symbol 解释,可以跳过不看 es2015即es6中新增,用于生成一唯一值的key,例如,为一对象声明一属性,如果设 obj.a 属性为某一数值,但是我们并不知道该对象是否本身会有该a属性,所以此方法不妥当,此时可以用var a = symbol();obj[a] = number
,则不会和该对象本身已存在的属性 a 冲突。且 symbol() d的括号中可以添加字符串,用于便于区分所定义的变量,但是symbol('a') === symbol('a')
结果是 false )
引用数据类型:Objecttypeof会返回的类型为七种:Number , String , Boolean , Undefined , Symbol , Object , function
typeof(null) => object
3. null和undefined的区别。
null == undefined : true ; null === undefined : false;
(1) null 表示一个‘无’的对象,转换为数值时为0;undefined 表示为一个‘无’数,转换为数字为NaN。
(2) null:作为函数的参数,表示该函数参数不是对象;
由于 js 中‘万物皆对象’,而每一个对象都有对象原型__proto__
属性,所以必然会形成一个由__proto__
形成的一个原型链,这个链必须要有终点,用 null 表示,即对象原型链的终点。undefined:
变量声明未赋值;
对象为赋值属性;
没有返回值的函数;
函数中,应该提供的参数没有提供,该参数为 undefined。
4. 原型链和原型对象
函数拥有原型,即 prototype ,原型是一个对象,而 js 中每一个对象都有一个
__proto__
属性,由__proto__
属性所组成的指向链即为原型链。
后期补充:原型对象的用途是为每个实例对象存储共享的方法和属性,它仅仅是一个普通对象而已。并且所有的实例是共享同一个原型对象,因此有别于实例方法或属性,原型对象仅有一份。它有函数原型和__proto__
两个属性,对象的__proto__
属性指向该对象的构造函数的原型对象。
详见:三张图搞懂JavaScript的原型对象与原型链
一个例子让你明白原型对象和原型链
5. 闭包
能够读取函数内部变量的函数
学习Javascript闭包(Closure)--阮一峰注意:函数内部定义变量要加上 var ,否则该变量则会成为全局变量