预解释

又叫变量提前声明

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

1 理解声明和定义

var name=12;

●声明(declare):var num;

告诉浏览器在全局作用域中有一个num的变量了,如果一个变量只是声明了但是没有赋值,默认的值是undefined

●定义(defined):num=12;给我们的变量进行赋值


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

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

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

 

3 预解释只发生在当前的作用域下,

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

 

4.预解释忽略重新声明不忽略重新定义

对于变量
  ==> 

对于函数
==》


5 例

///

js代码执行之前,进行预解释,对var进行声明,function进行声明和定义

此时调用

console.log(num);    //undefined  因为只声明了,没有定义

fn(1,2);             //3 因为function预解释时声明和定义都完成了,

///

var num = 12;

var obj ={name:"abc",age:2};

var set = function(){};     //属于var,预解释只声明

function fn(num1,num2){     //当预解释完毕,执行到此时,因为function 已经声明和定义完毕,因此直接跳过此处

    vartotal = num1 + num2;

    console.log(total);

}

console.log(fn);把整个函数的定义部分(函数本身)输出

console.log(fn(1,2));把当前函数执行的返回结果(return后面是啥,返回值就是啥,如果没有return,默认返回值是undefined)

 

5 js中内存的分类

●栈内存:用来提供一个供js代码执行的环境(作用域:全局/私有作用域)

●堆内存:用来存储引用数据类型的值(对象存储的是属性名和属性值,函数存储的是代码字符串。。。

 

 6.注意

var a = 0,b = 0;	//a,b都是私有变量
var a = b = 0;		//a是私有变量,b是全局变量(没有var)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值