什么叫变量提升?
变量提升:在当前上下文中(全局/私有/块),js代码自上而下执行之前,浏览器会提前处理一些事情(可以理解为词法解析的一个环节,词法解析一定发生在代码执行之前)
会把当前上下文带var/function关键字的进行提前的声明或定义
var
变量提升的意义:**是让我们在创建这个变量之前能够使用这个变量而不报错**
我们来看一道题目
代码执行之前:全局上下文中的变量提升
带var的只会提前声明
带function的会提前声明定义
/**
提升var和function哪个先声明:自上而下,哪个先出现就先声明,只是声明过的不会重复声明
/**
var func = function AAA(){ console.log('ok') }
‘具名化’的意义:
- 为了JS语法的规范性
- 当函数执行,在形成的私有上下文中,会把这个具名化的名字作为私有上下文中的变量(值就是这个函数)来进行处理
var
基于‘var 或者function’在全局上下文中声明的变量(全局变量)会映射到GO(全局对象window)上一份,作为他的属性;而且接下来是一个修改,另一个也会跟着修改
var
再看道题
/*
题目
/*