学习JS第一节——浏览器基本知识

浏览器组成:shell部分:所有能看到的部分内核部分-渲染引擎(HTML、CSS、JS的语法识别和渲染)-js引擎:负责执行JS-其他模块2008年Google发布浏览器Chrome,采用优化后的JavaScript引擎,引擎代号V8,可以把js代码直接转化为机械码来执行,速度很快。语言分类编译型语言:通篇翻译后生成一个文件(比如c++的.obj文件),操作系统执行这个文...
摘要由CSDN通过智能技术生成

浏览器组成:

  • shell部分:所有能看到的部分
  • 内核部分
    -渲染引擎(HTML、CSS、JS的语法识别和渲染)
    -js引擎:负责执行JS
    -其他模块

2008年Google发布浏览器Chrome,采用优化后的JavaScript引擎,引擎代号V8,可以把js代码直接转化为机械码来执行,速度很快。

语言分类

  • 编译型语言:通篇翻译后生成一个文件(比如c++的.obj文件),操作系统执行这个文件,比如c、c++
  • 解释型语言:翻译一行执行一行,可以跨平台使用比如JavaScript、PHP、python
    编译性语言更快,因此可以开发操作系统等底层语言;缺点是移植性不好,不跨平台。

服务器一般都是Unix和Linux,因为这两个操作系统安全性高
java既不是解释型语言也不是编译型语言,因为java先编译成.class文件,然后这个文件通过java虚拟机解释执行,因此也可以跨平台。

JavaScript:

  • 解释型语言
  • 单线程引擎
  • ECMA标准(es6等)

执行到标签是异步,js引擎继续执行下一行且同时下载标签链接的文件。

执行JS的三个步骤:

  • 通篇扫描:查找语法错误
  • 预编译:函数声明整体提升,变量声明只有声明提升
var a=1;

//变量提升
var a;
a = 1;

(1)暗示全局变量:若变量未经声明就赋值,则该变量为全局变量(window)

a = 10;

//相当于
window.a = 10;

(2)一切声明的全局变量,都是window的属性

var b = 1;

//相当于
window.b = 1;

//相当于给window加属性
window {
   b: 1
}

window就是全局的域

function text() {
	var a = b =123;
}
//赋值过程为 
//从右向左123赋值给b,而此时b未声明,因此b为全局变量
window.b      -输出123
//然后从左向右声明var a,然后将b的值赋给a,因此a为局部变量
window.a     -输出undefined

(3)预编译四步
例子:

function fn(a) {
	console.log(a);
	var a = 123;
	console.log(a);
	function a() {}
	console.log(a);
	var b = function() {}
	console.log(b);
	function d() {}
}
fn(1)

a. 创建AO对象(执行期上下文):由于函数执行而产生的存储空间库

AO {
}

b. 找形参和变量声明,将变量和形参名作为AO属性名,值为undefined(函数d是函数体,而不是变量,var b是变量)

AO {
	a: undefined
	b: undefined
}

c. 将实参值和形参统一

AO {
	a: 1
 	b: undefined
}

d. 在函数体里面找到函数声明,值赋予函数体,变量提升在这个过程中的体现为,函数的声明全体被提升到最顶部,相当于原来函数体的地方现在是空的。

var b = function() {}在第二部变量提升后,最后原来的地方只剩下变量赋值:b = function() {}

AO {
	a: function a() {}
 	b: function b() {}
 	function d() {}
}

所有的变量声明和一类变量声明被提升,变量赋值和函数赋值均留在原位

输出:

function a() {}
123
123
function b() {}
  • 解释一行执行一行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值