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.代码从上到下执行