预解析_预解析

预解析_预解析_02

预解析_预解析_03

预解析_预解析_04

预解析_预解析_05

预解析_预解析_06

预解析_预解析_07

预解析_预解析_08

预解析_预解析_09

预解析_预解析_10

预解析_预解析_11

预解析_预解析_12

预解析_预解析_13

预解析_预解析_14

预解析_预解析_15

预解析_预解析_16

预解析_预解析_17

相当于

预解析_预解析_18

两者都可

预解析_预解析_19

预解析_预解析_20

预解析_预解析_21

预解析_预解析_22

预解析_预解析_23

预解析_预解析_24

预解析_预解析_25

预解析_预解析_26

预解析_预解析_27

经典面试题,

预解析_预解析_28

预解析_预解析_29

预解析_预解析_30

小记:

js中变量的声明和和定义怎么区别?

(1)var x; //声明一个变量,但它还不包含一个值: undefined,不会被分配内存

(2)x = 10; //定义 之前已经声明的变量,定义就是分配了内存

(3)var y = 20; //声明并且定义一个变量

函数关键字声明时等于定义,函数表达式就是变量,只变量名声明不等于函数定义

由于预解析,输出代码应写在变量定义之后,调用代码应写在函数表达式之后,函数关键字定义函数时调用代码写在前后都可, 回调函数里面调用函数,其函数声明定义可写在回调后

面试常问

预解析提升到的是当前作用域,按作用域链规则从上到下执行

var a=b=c=9;只有a声明,集体声明方式var a=9,b=9,c=9;用逗号而不是等号