负责对网页语法的解释(如标准通用标记语言下的一个应用HTML、JavaScript)并渲染(显示)网页。 所以,通常所谓的浏览器内核也就是浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。不同的浏览器内核对网页编写语法的解释也有不同,因此同一网页在不同的内核的浏览器里的渲染(显示)效果也可能不同,这也是网页编写者需要在不同内核的浏览器中测试网页显示效果的原因。--摘自百度百科
Trident [?tra?dnt] 三叉戟
IE内核,是一款开放的内核,其接口内核设计的非常成熟,所以才有因此才有许多采用IE内核而非IE的浏览器(壳浏览器)涌现。
因自身的”垄断性“导致有段时间没有更新,曾几乎与W3C标准脱节以及大量BUG等安全性问题没有得到及时解决,因此开始有了非Trident内核浏览器的兴起。
CSS兼容前缀: -ms-
Gecko [?gek??] 壁虎
Mozilla Firefox内核,开源内核。CSS兼容前缀:-moz-
Presto [?prest??] 急板
Opera前内核(已废弃),特点是渲染速度的优化达到了极致,然而代价是牺牲了网页的兼容性。属商业引擎。Opera现改为Google的Blink内核。CSS兼容前缀:-o-
Webkit
Google chrome和safari的开源内核,是苹果公司自己的内核,Webkit引擎包含WebCore排版引擎及JavaScriptCore解析引擎。CSS兼容前缀:-webkit-
Blink
Blink是一个由Google和Opera Software开发的浏览器排版引擎,此举欲降低Webkit即苹果在浏览器市场的影响力。
Servo
Mozilla与三星达成合作协议开发“下一代”浏览器渲染引擎Servo。
JS 的 number 类型是浮点类型的,在使用中会遇到某些 Bug,比如 0.1 + 0.2 !== 0.3。
string 类型是不可变的,无论你在 string 类型上调用何种方法,都不会对值有改变。
对于 null 来说,很多人会认为他是个对象类型,其实这是错误的。虽然 typeof null 会输出 object,但是这只是 JS 存在的一个悠久 Bug。最直接的体现就是null === null。
NaN是属于number类型的,但是NaN !== NaN,所以在判断重复的时候需要用到isNaN函数。
基本数据类型存储的是值,引用数据类型存储的是指针,它指向这个类型值在内存里保存的地址。
它们的存储位置是不同的,先了解堆和栈这两个基本数据结构:
基本数据类型都是一些简单的数据段,它们是存储在栈内存中。
引用数据类型是保存在堆内存中的,然后再栈内存中保存一个对堆内存中实际对象的引用。所以,JavaScript中对引用数据类型的操作都是操作对象的引用而不是实际的对象。
这样设置的好处在于:
如下题:
function test(person) {
person.age = 26
person = {
name: 'yyy',
age: 30
}
return person
}
const p1 = {
name: 'yck',
age: 25
}
const p2 = test(p1)
console.log(p1) // -> {name:'yck', age: 26}
console.log(p2) // -> {name:'yyy', age: 30}
ECMAScript提供了三个特殊的引用类型Boolean、String、Number,我们称这三个特殊的引用类型为基本包装类型,也叫包装对象。当调用基本数据类型的方法时JS会根据其类型构建一个相应的实例对象(例如let str = new String("hello world")),在这个实例对象上去调用对应方法,在调用完方法后就会销毁这个实例对象。因此这就能够解释为什么基本数据类型不能添加属性和方法,以及基本数据类型调用任何方法也不会改变它自身。
原文:https://www.cnblogs.com/simpul/p/11020058.html