TypeScript学习(2)-变量声明 var let const
来源:互联网 发布:大学网络选修课网址 编辑:程序博客网 时间:2024/05/29 16:31
let、const是js中新的变量声明方式,es5,es6新版本的js语言规范出来的定义,弥补了var的缺陷。const是对let的一个增强,不允许对一个变量再次赋值,一般用于常量。
使用var声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象;
使用let声明的变量,其作用域为该语句所在的代码块内,不存在变量提升;
使用const一般是声明的是常量,在后面出现的代码中不能再修改该常量的值。
补充:javascript 严格模式
有一个要非常非常要注意的概念就是”JavaScript 严格模式”,比如在js中下述的代码运行就会报错:
let hello = 'hello world.';console.log(hello);
错误信息如下:
SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
解决方法就是,在文件头添加”javascript 严格模式”声明:’use strict’;
因为TypeScript是JavaScript的超集,所以它本身就支持let和const。 下面我们会详细说明这些新的声明方式以及为什么推荐使用它们来代替 var
let和var关键字的异同
声明后未赋值,表现相同
(function() { var varTest; let letTest; console.log(varTest); //输出undefined console.log(letTest); //输出undefined}());
使用未声明的变量,表现不同:
(function() { console.log(varTest); //输出undefined(注意要注释掉下面一行才能运行) console.log(letTest); //直接报错:ReferenceError: letTest is not defined var varTest = 'test var OK.'; let letTest = 'test let OK.';}());
重复声明同一个变量时,表现不同:
'use strict';(function() { var varTest = 'test var OK.'; let letTest = 'test let OK.'; var varTest = 'varTest changed.'; let letTest = 'letTest changed.'; //直接报错:SyntaxError: Identifier 'letTest' has already been declared console.log(varTest); //输出varTest changed.(注意要注释掉上面letTest变量的重复声明才能运行) console.log(letTest);}());
变量作用范围,表现不同
'use strict';(function() { var varTest = 'test var OK.'; let letTest = 'test let OK.'; { var varTest = 'varTest changed.'; let letTest = 'letTest changed.'; } console.log(varTest); //输出"varTest changed.",内部"{}"中声明的varTest变量覆盖外部的letTest声明 console.log(letTest); //输出"test let OK.",内部"{}"中声明的letTest和外部的letTest不是同一个变量}());
Egret下:
使用未定义的let:
class Test { public name:string = "Test"; public run(){ console.log(a); //该行报错 Block-scoped variable 'a' used before its declaration. console.log(b); let a; var b; }}
重复定义let:
class Test { public name:string = "Test"; public run(){ let a; //该行报错 Cannot redeclare block-scoped variable 'a'. var b; let a; var b; //该行报错 Cannot redeclare block-scoped variable 'a'. }}
变量范围:
class Test { public name:string = "Test"; public run(){ let a = 1; var b = 2; { let a = 2; var b = 2; } console.log(a); //1 console.log(b); //2 }}
阅读全文
0 0
- TypeScript学习(2)-变量声明 var let const
- angularJS2 变量声明 var let const
- 变量声明关键字var、let、const
- 使用var、let、const声明变量
- angularJS2 变量声明 var let const
- javascript中var let const三种变量声明方式详解
- JS中声明变量的三种方式 const var let
- var与ES6中const、let声明的变量的区别
- JS中的变量声明——var,let,const的区别
- ES6语法学习阶段一:let和const 变量声明
- Swift_声明变量var、常量let
- 一步一步学习TypeScript(03.let与const)
- const,let,var 定义变量的区别
- var、let、const小解
- var let 和const
- let var const 区别
- 【ES6】var / let / const
- Var、const、let区别
- Spark 好友推荐解决方案
- DataFrame中小数的保留小数点后两位
- c语言:1-1/2+1/3-1/4+……1/99-1/100的值
- 服务器所有服务都不能正常访问处理
- Dvwa之文件上传漏洞
- TypeScript学习(2)-变量声明 var let const
- Oracle字符集的查看和修改
- Go语言学习笔记之数组、数组切片和map
- 看着夜晚城市的广告都是用CorelDRAW发光字体效果很感叹
- JavaScript闭包中的循环
- 详细讲解双查询注入
- 面试题-构造队列
- 排序:冒泡排序与选择排序
- 虚拟机静态IP地址配置