1、严格性 ①、如果一个变量在未var声明之前使用,浏览器报告undefined。 ②、如果一个变量在未let或者const声明之前使用,浏览器报告错误。 一个变量在未做任何声明之前使用会报告错误,比如
console.log(i);
浏览器会报告错误:Uncaught ReferenceError: i is not defined。 如果在var声明之前使用是:
console.log(i);
var i;
浏览器则会输出:undefined,不会报告错误。 如果是在let和const声明之前使用:
console.log(i);
let i;
或者
console.log(i);
const i=1;
则会报告错误:Uncaught ReferenceError: Cannot access 'i' before initialization。
2、声明 ①、var声明的变量可以重复的,即使是在同一作用域。 ②、let和const在同一作用域当中是不能重复声明的。
var i=1;
var i=2;
let j=3;
// let j=4;//报告错误
const k=5;
const k=6;//报告错误
3、作用域 ①、var声明的变量要么是全局的,要么就是函数级的,没有块级作用域之说。 ②、let、const属于块级作用域,一对{}就是一个块。
var的例子:
var i=1;
{
var i=2;
console.log('在块中输出i:'+i);
}
(function test(){
var i=3;
console.log('在函数中输出i:'+i);
})();
console.log('在全局中输出i:'+i);
输出:
在块中输出i:2
在函数中输出i:3
在全局中输出i:2
let的例子:
let j=1;
{
let j=2;
console.log('在块中输出j:'+j);
}
(function test(){
let j=3;
console.log('在函数中输出j:'+j);
})();
console.log('在全局中输出j:'+j);
输出:
在块中输出j:2
在函数中输出j:3
在全局中输出j:1
const的例子:
const k=1;
{
const k=2;
console.log('在块中输出k:'+k);
}
(function test(){
const k=3;
console.log('在函数中输出k:'+k);
})();
console.log('在全局中输出k:'+k);//在全局中输出
输出:
在块中输出k:2
在函数中输出k:3
在全局中输出k:1
在《JavaScript(8):即时函数》中经典面试题中,有下面的代码
for(var i=0;i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?