【转载】TypeScript学习笔记——var与let
var 与 let 都是TypeScript里的变量声明方式
两者非常相似,在语法不存在很大的差异,而在语义上存在很大的区别
块作用域
var有着些奇怪的作用域规则
例如
function f(run: Boolean)
{
if(run)
{
var x=10;
}
return x;
} f(true); //返回10
f(false); //返回 undefined
而 let 的作用域就正常多了
function f(run: Boolean)
{
let a=1;
if(run)
{
let x=a+1;
return x; //没有错误
}
return x; //错误,x不存在
}
声明
var
多次声明同一个变量,不会报错,只会得到一个变量
function f()
{
var x;
var x;
}
上述例子中,所有的x的声明实际上都引用了一个相同的x
这样的声明规则就会造成这样的错误
function f(m : number [ ] [ ] )
{
var sum=0;
for (var i=0 ; i<5 ; i++ )
{
var row = m [ i ] ;
for ( var i=0 ; i<5 ; i++ )
sun=+ row[ i ];
}
return sum;
}
这里返回的sum,并不是这个二维数组的值的总和,原因是里层的for 循环会覆盖变量 i ,所有的 i 都引用相同函数的作用域内的变量。
let
就相对严格,无法多次声明同一个变量,一个变量只能声明一次,并且无法在 let 语句前去访问该变量
function f()
{
let x;
let x; //错误
}
在嵌套作用域中,let 还具有屏蔽功能
function f(m : number [ ] [ ] )
{
let sum=0;
for (let i=0 ; i<5 ; i++ )
{
let row = m [ i ] ;
for ( let i=0 ; i<5 ; i++ )
sun=+ row[ i ];
}
return sum;
}
这里的得到的sum就是正确答案,因为内层的 i 会屏蔽掉外层的 i 。
通常来讲,我们应该避免使用这个屏蔽功能,这样我们才能写出清晰的代码,但有些情况会需要这种写法
原文地址:https://blog.csdn.net/weixin_41962385/article/details/80158246
【转载】TypeScript学习笔记——var与let的更多相关文章
- Typescript 学习笔记五:类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记四:回忆ES5 中的类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记二:数据类型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- TypeScript学习笔记(八):1.5版本之后的模块和命名空间
我之前有写过TS1.5版本之前的“模块”的笔记:TypeScript学习笔记(七):模块 但是TS这里的模块和在ECMAScript 2015里的模块(即JS原生支持了模块的概念)概率出现了混淆,所以 ...
- Typescript 学习笔记七:泛型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记六:接口
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记三:函数
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记一:介绍、安装、编译
前言 整理了一下 Typescript 的学习笔记,方便后期遗忘某个知识点的时候,快速回忆. 为了避免凌乱,用 gitbook 结合 marketdown 整理的. github地址是:ts-gitb ...
- typescript学习笔记(三)---接口
关于第二章的学习笔记是变量声明. 接口:TypeScript的核心原则之一是对值所具有的结构进行类型检查. 它有时被称做“鸭式辨型法”或“结构性子类型化”. 在TypeScript里,接口的作用就是为 ...
随机推荐
- [Winform]setupfactory制作安装包卸载输入密码进行验证
摘要 项目有这样一个需求,在体验机上安装了一个软件,如果有用户卸载的时候,给与输入密码验证的提示,当然强制删除软件所在目录除外.那么这个有办法实现吗? 解决办法 在卸载的时候,用户单击下一步的时候进行 ...
- cefsharp wpf 中文输入问题解决方法
摘要 最近在搞一个客户端的项目,考虑使用wpf,内嵌webView的方式,访问h5页面.所以使用了CefSharp组件,但发现一个问题,就是在输入中文的时候,无法输入. 解决办法 去官方github的 ...
- android 模拟器报 no CPU/ABI system image for target
搭建完成Android开发环境后,在创建安卓模拟器的时候遇到了问题.这个问题就是图片中显示的no CPU/ABI system image available for this target还有no ...
- iOS 7.1 系统可以设置 button shapes,此功能可让按钮多一条下滑线
IniOS 7, Apple completely revamped the user interface to give it a fresh and modern look. One of the ...
- iOS webservice 接口使用方法
1.没有参数的webservice 接口,如下: 接口名:获取服务器时间 方法名: getServerTime() 参数:空 返回值:服务器当前时间: yyyy/MM/dd HH:mm:ss 使用方法 ...
- Java/JSP获得客户端网卡MAC地址的三种方法解析
java/jsp获得客户端(IE)网卡MAC地址的方法大概有三种. 1.通过命令方式,在客户端执行Ipconfig 等等.(java/jsp) 2.通过ActiveX的方法.(jsp) 3.通过向13 ...
- ASP.NET MVC:Cookie 的过期时间在服务器端是获取不到的
现状 一旦 Cookie 在服务器端设置后,在后续的请求中是获取不到过期时间的,因为:Cookie 是存储和过期处理都是由客户端管理的,在后续的请求中,浏览器向服务器发送 Cookie 的时候就不包含 ...
- YII框架分析笔记2:组件和事件行为管理
Yii是一个基于组件.用于开发大型 Web 应用的高性能 PHP 框架.CComponent几乎是所有类的基类,它控制着组件与事件的管理,其方法与属性如下,私有变量$_e数据存放事件(evnet,有些 ...
- 便利的初始化view以及设置tag值
便利的初始化view以及设置tag值 效果 源码 https://github.com/YouXianMing/iOS-Project-Examples 中的 SetRect // // Access ...
- 7z文件格式及其源码linux/windows编译
7z文件格式及其源码的分析(二) 一. 准备工作: 1. 源码下载: 可以从官方中文主页下载:http://sparanoid.com/lab/7z/. 为了方便, 这里直接给出下载链接: http: ...