JavaScript高级一

 1.语言

1.机器语言
2.汇编语言: 汇编指令
3.高级语言: C、C++ 、Java || Javascript、python
                       编译成可执行文件 || 解释型语言

                        需要js引擎解析成机器语言

2.输入域名后

1.输入域名-> cdn域名解析 -> 找到最近的服务器ip地址 -> 向服务器请求静态资源 -> 浏览器下载资源 、解析资源:
        a.解析html,生成dom树
        b.遇到css标签,就去请求资源,解析css,生成css规则树,与dom结合生成渲染树,布局,绘制,显示
        c.遇到script标签,请求资源,解析js,-> js引擎 , 最后CPU执行
                        浏览器内核:webkit
                                webCore                                      webJavaScript(webJS)【函数调用栈】
                                解析html 布局渲染等(渲染层)      解析执行js(逻辑层)
                                内核:
                                        geoco-firefix
                                        trient-ie  现在是wink
                                        wikit-google
                        js引擎:JavaScriptCore、V8、

3.V8是啥有啥

1.V8 内部有:
        webCore[渲染引擎] 
        JavaScriptCore[js引擎]: js解释器parser-负责词法解析 语法解析
                                              垃圾回收机制GC

4.V8干了啥:JS -> CPU识别

1.源码-> 解释器parser(词法解析 语法解析) -> 抽象语法树-AST树 ->
                解释器parser阶段-被解析,创建GlobalObject对象
ignition解析成字节码(跨平台的语言) -> 当前cpu的汇编语言 -> 机器语言 -> 输出结果
                | 优化的机器码 |      ts执行效率比js高
                执行js代码-V8内部的执行环境栈ECS
                        有function
                        无function:
                            先压入全局执行上下文Global Excution Stack === GO   <- 变量提升的根源


2.为了让代码运行:
        从磁盘 加载到 内存[中运行->机器语言]
        内存划为: 堆结构  栈结构

5.解析执行js文件

1.解析:
        创建全局对象GO: 作为VO属性
                Global Object = { String: '类', Array: '类',window: GO,  自己定义的变量 }
                同时,作用域已确定-变量的访问 【只会在scope-chains中传递】

2.执行:
        分俩种:全局执行上下文GEC
                       函数执行上下文FEC-此时创建对象AO,作为VO属性,同时定义scope chain+this:
3.编译阶段特殊情况:
        return 后面var 变量    一样会提升
        函数内直接使用为申明得变量,等同于在全局声明变量
        

function foo4() {
    var a = b = 10                                                                                var a = 10
                                                                                                          b = 10 // 全局的
}
foo4()
console.log(a)               

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值