const、let、var的主要区别
接触ES6之后,以前定义变量的方式由var增加了let、const,平时看别人用也不知道如何区别具体差别,好好科普了一下记录下来,方便大家一起学习。
var(大家最熟悉的定义方式)
1、可定义全局作用域
2、定义内容可以修改
3、定义的变量不初始化会输出undefined
var a = 1
function test() {
a = 3
}
test()
console.log(a) //a的值为3
7 var b
8 console.log(b) //如果b不赋值则输出undefined
let(新增的块级作用域)
1、函数内定义,函数外无法使用
2、和var一样,定义的变量不初始化会输出undefined
function test () {
for (let i=1;i<3;i++) { // 可以把每一个{}包着的区域理解为当前作用域,let只在其内部生效
console.log(i) // 输出1、2
}
console.log(i) // Uncaught ReferenceError: i is not defined
}
test()
let z
console.log(z) //undefined
const(主要用于申明常量,常量无法修改)
1、主要用于申明常量,无法被修改
2、const定义的常量必须初始化
3、但是const如果定义为一个对象,这个对象是可以修改的
function test () {
const a = 6
a = 8
console.log("a:" + a) // 报错 Assignment to constant variable.
}
test()
// 用const定义一个对象
const k = {
a: 3
}
k.b = 6
console.log(k) // {a: 3, b: 6}
const c
console.log(c) // 报错
如有错误,请您指正!
const、let、var的主要区别的更多相关文章
- JavaScript中const、var和let区别浅析
在JavaScript中有三种声明变量的方式:var.let.const.下文给大家介绍js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始 ...
- JS中const、var 和let的区别
今天第一次遇到const定义的变量,查阅了相关资料整理了这篇文章.主要内容是:js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始化. 1 ...
- js中三种定义变量 const, var, let 的区别
js中三种定义变量的方式const, var, let的区别 1.const定义的变量不可以修改,而且必须初始化. 1 const b = 2;//正确 2 // const b;//错误,必须初始化 ...
- 关于ES6的let,const与var之间的三生三世
首先需要明确的是let.const.var都是用来定义变量的 在ES6之前,我们一般都用var来定义变量,例如 : function test(){ var i=1; console.log(i); ...
- delphi中move函数的正确理解(const和var一样,都是传地址,所以Move是传地址,而恰恰不是传值)太精彩了 good
我们能看到以下代码var pSource,pDest:PChar; len: integer;.......................//一些代码Move(pSource,pDest,l ...
- ES6中let、const和var的区别
一.let 1.基本用法 ES6 新增了let命令,用来声明变量. let 的用法类似于 var,但所声明的变量只在 let 命令所在的代码块内有效(一个“{}”相当于一个代码块) { let a = ...
- 浅谈ES6——ES6中let、const、var三者的区别
在了解let.const.var的区别之前,先了解一些什么是es6 Es6 全称ECMAscript 是JavaScript语言的一个标准,其实Es6本质就是JavaScript的一个版本,为什么叫E ...
- let、const、var区别?
let.const.var区别? let和const不存在变量提升(没有预解析,var有预解析). let和const在同一作用域范围内不能重复定义变量.(var可以). let和const有严格的作 ...
- let 和const与var的不同
1. let的作用域在代码块中仅限在当前的作用于中 { var str1 = 12; console.log(str1); let str2 = 20; console.log(str2); //20 ...
随机推荐
- asp.net core 错误定位 & vs2017 远程调试部署在centos上的asp.net core程序
前言 程序运行中会出现各种BUG. 排除BUG有三种方式. 一.访问页面直接报错误信息 出于安全,服务器是关闭这个功能的.在centos上可以用 命令设置环境变量来解决: export A ...
- 关于zepto 选择特定值的input 报错问题
zepto 选择特定值的input 时,需要用单引号或双引号引用这个特定值 否则 报错
- c# 控制台输出txt文件
string tempFileName = "DETAIL_" + DateTime.Now.ToString("yyyyMMddHHmmssffff") + ...
- javascript 匿名函数及闭包----转载
网上很多解释,我无法理解,我想知道原理...这篇文章应该可以透彻一点Query片段:view plaincopy to clipboardprint? (function(){ //这里忽略 ...
- 一、WPF 2个datagrid之间同步进度条
页面代码 <Grid DockPanel.Dock="Left" Width="400"> <DataGrid Name="dgSo ...
- kivy.org - Open source Python library for rapid development of applications
kivy.org - Open source Python library for rapid development of applicationsthat make use of innovati ...
- HTML5新增功能
HTML5日期输入类型(date) 1.HTML5规范里只规定date新型input输入类型 HTML5里的dateinput类型给了给了浏览器实现原生日历的机会,从此之后,JavaScript版的日 ...
- S/4HANA服务订单Service Order的批量创建
我工作中接到一个任务,需要在性能测试系统里创建一亿条服务订单service order来做性能测试. 这么大规模的数据量,当然只能用代码来创建了. 本文提到的所有ABAP代码,我均已上传到我的Gith ...
- SQLi-db 批量注入工具+教程
这款工具在中国还没人发.所以我发来给大家玩玩:顺便带了教程. 关键字:inurl:article.asp?id= inurl:article.php?id=inurl:article.jsp?id=( ...
- PHP面向对象(OOP)编程入门教程链接
PHP官方学习OOP: http://php.net/manual/zh/oop5.intro.php 从其他博主学习:(以下链接来源: http://blog.snsgou.com/post-41. ...