博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转载】TypeScript学习笔记——var与let
阅读量:7059 次
发布时间:2019-06-28

本文共 1261 字,大约阅读时间需要 4 分钟。

var 与  let 都是TypeScript里的变量声明方式

两者非常相似,在语法不存在很大的差异,而在语义上存在很大的区别

 

块作用域

var有着些奇怪的作用域规则

例如

function  f(run: Boolean){         if(run)         {               var x=10;                         }          return x;} f(true);   //返回10f(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 。

通常来讲,我们应该避免使用这个屏蔽功能,这样我们才能写出清晰的代码,但有些情况会需要这种写法

 

原文地址:

转载地址:http://glyll.baihongyu.com/

你可能感兴趣的文章
由浅到深学习JDBC二
查看>>
Jenkins集成SonarQube 实现构建项目同时审查代码
查看>>
文本数据处理之awk
查看>>
JavaScript基础之String对象和RegExp对象
查看>>
Zabbix监控之Zabbix proxy
查看>>
我的友情链接
查看>>
修炼真经
查看>>
跟小博老师一起学Servlet ——Servlet之属性操作2
查看>>
自建Saltstack的repo软件源仓库
查看>>
Domino和Java技术杂烩
查看>>
Ext.class源码
查看>>
EXCHANGE 备忘
查看>>
Windows Server 2003应用宝典
查看>>
DAM2加密狗克隆的具体解决方案
查看>>
教你深入系统的学习linux系统
查看>>
前台向后台隐藏传参数
查看>>
Oracle10g手工创建数据库
查看>>
JS下载文件
查看>>
Nginx 模块常用命令介绍
查看>>
thinkphp5.0框架swoole的使用
查看>>