预解释

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25354709/article/details/82703106

JS中的数据类型:

1.基本数据类型:

number、string、boolean、null、undefined

2.引用数据类型

object ( 包含 {} 、[]、/^/、Date) 、function 

基本数据类型和引用数据类型的本质区别:基本数据类型是按照值来操作的,而引用数据类型是按照引用地址来操作的。

var num = 12;                          //是number类型
var obj = {name: "robot", age: 8};     //是对象数据类型
function fn() {                        //是函数数据类型     
    console.log("robot");
}

console.log(fn);        //把整个函数整体在控制台输出

//执行结果:
function fn() {
    console.log("robot");
}

console.log(fn());      //把当前函数执行的返回结果,在控制台输出。看return后面的值是啥,
如果没有return,默认返回值是undefined。

//执行结果:
robot
undefined

执行过程:

浏览器加载页面的时候,会提供一个执行环境,

1) 当浏览器加载HTML页面的时候,首先会提供一个供全局JS代码执行的环境,称为全局作用域。用window代表全局作用域。

基本数据类型和引用数据类型的执行过程

2.预解释

在当前的作用域中,JS代码执行之前,浏览器首先会默认的把所有带var 和 function的进行提前的声明或者定义。

声明和定义

var num = 12;  分为声明和定义

声明: var num;   告诉浏览器在全局作用域中有一个num的变量了。

定义:num = 12;  给变量num进行赋值。

对于var 和 function关键字的,在预解释的时候,操作是不一样的。

var 在预解释的时候,只是提前的声明。

function 在预解释的时候,提前的声明和定义都完成了。

1) 预解释只发生在当前的作用域下,例如:

开始只对window下的进行预解释,只有函数执行的时候,才会对函数中的进行预解释。

预解释也叫做 变量提升,或者 函数提升和定义

示例一:

var num = 12;
var obj = {name: "robot", age: 8};
function fn(num1, num2) {
    var total = num1 + num2;
    console.log(total);
}

执行过程:

//1. 浏览器提供一个全局作用域 window
//2. 预解释
var num;          //声明
var obj;          //声明
fn = xxxfff000;   //声明和定义了一个fn

//3.代码从上到下执行

猜你喜欢

转载自blog.csdn.net/qq_25354709/article/details/82703106
今日推荐