JavaScript之预解析

预解析

在当前作用域下, js 运行之前,会把带有 var 和 function 关键字的事先声明,并在内存中安排好。然后再从上到下执行 js 语句。预解析只会发生在通过 var 定义的变量和 function 上。

声明和定义
var num=10;

这行代码可分为两个步骤:声明和定义
声明:var num;告诉浏览器在当前作用域下有一个变量 num 存在了,但并没有定义,其值为 undefined
定义:num=10; 给变量赋值

var声明的变量与function声明的函数在预解析时的区别

var 声明的变量预解析时只是进行提前声明
function 声明的函数在预解析不仅提前声明,还会同时定义

预解析只限于当前作用域

程序在最开始只对全局变量和函数进行预解析,只有函数执行时才会对其中的局部变量和函数进行预解析

console.log(num);  // 返回undefined(只进行了声明,未被定义)
var num=10;
console.log(num);  // 返回10(被定义了)

fun();  // 弹框出现(声明同时也定义了)
function fun () {alert()}

function fun1() {
	console.log(num);  // 返回undefined(当前作用域中存在num,只是未被定义,所以不会返回全局num的值)
	var num=100;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值