1.变量域
js中只有函数作用域(local scope)和全局作用域(global scope),没有块级作用域
2.变量提升
对于val定义的变量和function a(){} ,存在变量提升。
注意:函数表达式不存在变量提升。
实例1:
(function() {
console.log(testc); //打印出undefined
testa(); // 打印出testa testb(); // 报错:提示undefined is not a function function testa() { console.log("testa"); } var testb = function() { console.log("tesb"); } var testc = "testc";})(); 实例二:
var a = 1; function b() { console.log(a); //function a(){} a = 10; console.log(a); //10,此时函数作用域中定义了变量a。 return; function a() { //变量提升到最前面,相当于var a=function(){} } } b(); console.log(a); // 1 ,访问的是全局变量
实例三:var a = 1; function b() { console.log(a); //1,此时a为全局变量 a = 10; console.log(a); //10,改变了全局变量的值 return; function c() { } } b(); console.log(a); //10
欢迎指正!