JavaScript的作用域和变量提升
2017-11-16 22:26
561 查看
1.变量域
js中只有函数作用域(local scope)和全局作用域(global scope),没有块级作用域
2.变量提升
对于val定义的变量和function a(){} ,存在变量提升。
注意:函数表达式不存在变量提升。
实例1:
(function() {
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
欢迎指正!
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
欢迎指正!
相关文章推荐
- JavaScript中作用域和作用域链的简单理解(变量提升)
- JavaScript 函数总体概述(函数声明/参数传递/返回值/加载/变量和作用域/变量声明提升/匿名函数/回调函数)
- JavaScript变量作用域和变量提升解释(JavaScript Variable Scope and Hoisting Explained)
- JavaScript 变量作用域和声明提升
- JavaScript作用域和变量提升
- JavaScript中的作用域与函数和变量声明的提升
- JavaScript的变量及函数(变量提升、嵌套作用域、条件语句、严格模式、IIFE、闭包、模块化、this、原型)
- javascript中的变量作用域以及变量提升详细介绍
- Javascript作用域和变量提升
- JavaScript中作用域和作用域链的简单理解(变量提升)
- Javascript作用域和变量提升
- JavaScript变量作用域和变量提升解释(JavaScript Variable Scope and Hoisting Explained)
- javascript 变量提升,及变量作用域
- 深入理解Javascript作用域与变量提升
- javascript中的变量作用域以及变量提升
- Javascript作用域和变量提升
- Javascript作用域和变量提升
- javascript的变量提升和作用域
- javaScript的作用域和变量提升
- javascript中的变量作用域以及变量提升详细介绍