-
作用域
- 全局作用域
在函数外部的区域,都可以称之为全局作用域 - 局部作用域
在函数内部的区域,都可以称之为局部作用域 - 块级作用域
es6中新增了块级作用域,把{}都可以视为块级作用域 -
预解析
- 该机制是javaScript中存在的一种机制,会把函数声明,和使用Var声明的变量,进行提升
-
变量声明提升
console.log(num)
var num = 20;
var num;
console.log(num)
num = 20
*********************************分割线*******************************************
fn()
var fn = function(){
console.log('啊~我提升了')
}
var fn
fn()
fn =function (){
console.log('啊~我提升了')
}
- 函数声明也会被预解析机制影响,导致函数声明提升
函数虽然提前调用,但是不会报错,印证了函数声明存在预解析 fn()
function fn() {
return console.log('预解析中的函数声明')
}
function fn() {
return console.log('预解析中的函数声明')
}
fn()
fn()
function fn() {
return console.log('我是fn函数A')
}
fn()
function fn() {
return console.log('我是fn函数B')
}
function fn() {
return console.log('我是fn函数A')
}
function fn() {
return console.log('我是fn函数B')
}
fn()
fn()
- 函数名和变量名重复:
只会对函数进行提升,变量忽略,并且不会发生调用 console.log(fnc)
function fnc() {
return console.log('我是函数')
}
var fnc = '我是一个字符串'
function fnc(){}
console.log(fnc)
fnc = '我是一个字符串'
|