js关于变量声明 var let const 区别
关于定义(声明)变量
ES6之前定义变量是用 var ,那么var有什么问题吗,如果但但从变量上来说是没有问题的,var是variable的缩写,英文翻译是变量。
var问题:
1.污染全局
之前定义循环的方式:
for(var i=0; i<10; i++){ //dosmthing }
alert(i);
有一天突然运营文件,这个时候弹出的是 10 ,这个时候发现有问题。因为定义的i是一个全局变量,也就是说在之前的版本会有作用域问题,一个是全局作用域,一个是函数(局部)作用域;
2.预解析问题(变量提示)
var a = hello; function fn(){ alert(a); var a=world; } fn();
其实上面的这段代码就等于是下面的这段代码,所以执行函数fn()的时候会报错,undefiend.
var a = hello; function fn(){ var a; alert(a); //var a=world; a=world; } fn();
在es6中首先引出一个概念就是块级作用域,在es6中有2中新的定义变量,一种是let,一种是const;
let就跟之前var的用法一样,const是定义常量的;
let相比var的好处:
1.具备块级作用域:
见到let就是块级作用域,在什么地方定义就只能在什么地方使用;
2.没有预解析
3.同一个作用域不能重复定义,只能重新赋值
4.for循环,for循环里面是类似父级作用域,花括号里面又是一个作用域,比如
for(let a = 0; a<3; a++){ let a = abc; console.log(a); }
const定义的变量是常量,不能修改,常用在以下地方:就是不让别人动你的代码的时候,还常常用在定义host,账号,密码等
const ora = require(ora) const rm = require(rimraf) const path = require(path) const chalk = require(chalk) const webpack = require(webpack) const config = require(../config) const webpackConfig = require(./webpack.prod.conf)