浏览器
组成部分:shell(能看到用户界面) 内核
5大主流浏览器 内核
IE trident
chrome webkit/blink
safari webkit
firefox gecko
opera presto
opera被360和昆仑万维收购了
内核:渲染rendering引擎/JS引擎
三大块
ECMAscript (语法、变量、关键字、保留字、值、原始类型、引用类型运算、对象、继承、函数)
DOM document object model (w3c)
BOM browser object model (没有规则)
JavaScript JS引擎
单线程 -》 模拟多线程
轮转时间片
短时间内轮流执行多个任务的片段
1、任务1 任务2
2、切分任务1 任务2
3、随机排列这些任务片段,组成队列
4、按照这个队列顺序将任务片段送进JS进程
5、JS线程执行一个又一个的任务片段
变量 数据结构 运算能力 函数
原始值 存在栈内存stack 并且不可改变值
引用值 值指针存在栈内存 值存在堆内存
var i=100
for(;i--;){
console.log(i)
}
false 0 NaN undefined 引用值:array object function date RegExp
typeof(123) typeof 123 都行 建议用typeof(123)
typeof(null)-->object
typeof(undefined) -->undefined
typeof(1 - "1") -->number
typeof(a)----//a未被声明 -->undefined
typeof(typeof(a)) -->string
typeof 结果返回的结果的数据类型是string
显示类型转换、隐示类型转换
underfined不大于0不小于0不等于0 null也是
underfined等于null 但是不全等于
function test(a,b){ -->a,b占位,形式上占位,形式参数--》形参
console.log(a,b)
}
var aa=Number(window.prompt('a'))
var bb=Number(window.prompt('b'))
test(aa,bb) -->实际参数,实参
形参和实参数量可以不相等
函数也是一种对象类型, 引用类型 引用值
test.name test.length test.prototype
对象——> 有些属性我们是我们无法访问的
JS引擎内部固有的隐式属性
[[scope]]
1,函数创建时,生成的一个JS内部的隐式属性
2,函数存储作用域链的容器、作用域链
GO global object 全局执行期上下文
1,找变量
2,找函数声明
3,执行
AO Activation Object 函数的执行期上下文
1,形参和变量声明
2,实参值赋给形参
3,寻找函数声明
4,执行函数
函数执行完成以后,AO是要销毁的
AO是一个即时的存储容器
ASCII码 Unicode码
ascii码 表一:0-127 表二:128-255 一个字节 byte
UNICODE码 涵盖ASCII码 除ASCII码以外 两个字节
typeof 用来判断各种数据类型
instanceof运算符用来判断一个构造函数的prototype属性所指向的对象是否存在另外一个要检测对象的原型链上
var a = {}
a instanceof Object