第一章 作用域是什么
前言
正在学习js,记录一下笔记
有状态 vs. 无状态
什么是状态,可以参考https://cloud.tencent.com/developer/article/1620559
动态语言 vs. 静态语言
js不是动态语言,它是编译语言,只不过大多数情况下js是编译后立即执行的,而且相对其他编译语言,它不是提前编译的,编译结果也不能在分布式系统中移植
js的编译特点
var a=2;不是一次编译动作,而是两个动作var a和a=2
1)如果没声明a,声明,否则忽略var a;
2)如果有变量a,赋值,否则查找并赋值(仅作用域内)
LHS查询和RHS查询
LHS查询是为了赋值,如果找不到变量,在非严格模式下会在顶级作用域创建变量
RHS是为了取值,如果找不到变量,会抛出RefrenceError
如果找到变量但是操作不合理,会抛出TypeError异常