JavaScript的变量作用域1-JavaScript的变量作用域是基于其特有的作用域链的

观察console.log(snow);这句代码。JavaScript首先在inner函数中查找是否定义了变量snow，如果定义了则使用inner函数中的 snow变量；如果inner函数中没有定义snow变量，JavaScript则会继续在snow_fly函数中查找是否定义了snow变量，在这段代码 中snow_fly函数体内没有定义snow变量，则JavaScript引擎会继续向上（全局对象）查找是否定义了snow；在全局对象中我们定义了 snow = 1，因此最终结果会弹出'1'。
作用域链：JavaScript需要查询一个变量x时，首先会查找作用域链的第一个对象，如果第一个对象没有定义x变量，JavaScript会继续查找有没有定义x变量，如果第二个对象没有定义则会继续查找，以此类推。
上面的代码涉及到了三个作用域链对象，依次是：inner、snow_fly、window。