今天第一次接触到typescript,看了第一个知识点就是变量的声明,来回忆回忆,做做笔记

以前只用过JavaScript原生写网站特效,今天还是第一次听说typescript的,然后看了一下它的基本知识,感觉很像Java,真的太像了,但是又有不同点。很让我惊奇看到的第一个知识点就和以前不同,很新鲜。

变量的声明:

在typescript中我知道的变量的声明有两种(除了var),分别是let和const。以前我经常用的是var,let和var很相似,const和他们不一样,让我惊讶的是它居然能阻止对变量的再次赋值。

因为typescript是JavaScript的超集,所以JavaScript本身是支持let和const的。那么我们为什么要使用let和const而不是var呢?

var的作用域规则:

function v(a:boolean){

  if(a){

  var b=10;

}

  ruturn b;

}

  v(true);//10

  v(false);//undefined

上面例子中变量b是if语句里面,但是我们却可以在外面访问它,是因为var申明可以包含它的函数,模块,命名空间或全局作用域任何位置被访问。这些作用域规则可能会引发错误,其中就有多次申明同一个变量并不会报错。var它不会管你声明了多少次,反正你只会得到一次。

let声明:

它和var写法是一样的;他们的区别不在语法上在语义上面;let不能再一个作用域里进行多次声明。

例如:

let x=5;

let x=10;//error

let块作用域:

当let声明一个变量的时候它使用的词法作用域或者是块作用域。块作用域指的就是他们包含的块以外的不能访问。

例如:

function fun(i:boolean){

  let a=5;

  if(i){

  let b=a+5;

  return b;

}

  return b;//error:‘b‘ doesn`t exist here

}

或者

try{

  throw "hello word!";

}

catch(e){

  console.log("word!");

}

  console.log("e");//error:‘e‘ doesn`t exist here

这里的b和e作用域就是if语句块或者catch语句块里。拥有块级作用域的变量有一个特点是他们不能再被声明之前读或者写。

两个块级作用域声明同一变量也会报错。

例如:

function fun(x){

  let x=5;//error interferes with parameter declaration

}

function fu(){

  let x=5;

  var x=5;//error :can`t have both declarations of ‘x‘

}

并不是想说块级作用域变量不能在函数作用域内声明,而是块级作用域变量需要在不用块里声明。

const声明:

它还是let声明有相同的作用域规则,但是它被赋值后不能再被改变。除非使用特殊的方法去避免,实际上const变量的内部状态是可以改变的。

总结一下吧,现在有两种作用域相似的声明方式,哪一种更好呢?我觉得各有千秋吧,视情况而定。

书上说可以使用做小特权原则,所有变量出除了你计划去修改的都用const。使用const可以让我们更容易推测数据流动。但是我更喜欢用let。

时间: 2024-10-13 16:18:51

今天第一次接触到typescript,看了第一个知识点就是变量的声明,来回忆回忆,做做笔记的相关文章

百度地图API的第一次接触

因为项目的需求,第一次接触了百度API. 第一步:引用百度地图API的脚本 如果在局域网环境中,要把地图文件和js文件都要下载下来 <script type="text/javascript" src="http://api.map.baidu.com/api?key=*****************&v=1.0&services=false"></script> 这个要去百度开发者中心申请KEY 第二步:建立一个你随便取名

空调的进化史:“大多数美国人是在电影院第一次接触到空调的”

空调的进化就像人类的进化一样,适者生存:区别在于,人类是为了适应自然环境的需求而空调是为了满足人类不断变化的需求.夏天睡醒了,为了大家的福利着想,现在就来"八一八"空调的进化史吧,看看人类都有什么稀奇古怪的需求?!空调又是如何变化的?现在的空调又是以怎样的难以想象的高科技颠覆你的"三观"?未来的空调又将会是怎样的逆天存在? 空调的进化史 你知道吗?空调最初并不是因为人才产生的,而是源于一个印刷作坊,印刷机由于空气湿度与湿度的变化使得纸张伸缩不定,对位不准,印出来的东

第一次接触oracle数据库与suse系统心得

第一次搭建oracle用了两天时间.............. 经历了太多的艰难 所以做一些总结 总结,心得: 因为昨天安装多次未成功,所以今天在部署前,先总结了一下昨天出现的问题,提前做好了一些相应的措施,避免了一些不必要的麻烦 先叙述下昨天的大概流程:            昨天在安装的时候,先是在网上找了文档,然后就开始在VMware上部署oracle的运行环境SUSe11 当时VMware上给的配置如下:(处理器1p/1c 内存1G 硬盘10G 等系统安装完成后就开始配置网络,让虚拟机与

第一次接触oc

第一次接触oc,要明白oc与之前所接触过得C语言不同,oc是面向对象而C语言是面向过程的,对于新手来说分清这2个的区别还是挺困难的. 首先面向过程是一种以事件为中心的编程思想—分析出解决问题所需的步骤,然后用函数把这些步骤一步一步实现,使用的时候一步一步调用. 而面向对象是一种以事物为中心的编程思想,体现在它是把问题分解给各个对象,建立对象不是为了完成一个步骤,而是为了描述某个事物在整个问题的步骤中的行为.力图使计算机语言对事物的描述与现实中改事物的本来面目尽可能一致. 这时候我们 就要了解什么

第一次接触Java

在学习完计算机基础后,开始学习了专业课程Java.这是我第一次接触Java,内心还是有点小激动的,想到在以后的工作中都离不开这个了.虽然说之前没有接触过Java,但我大学的时候,学过Vb也考过了计算机二级,所以对于代码来说不陌生,只不过有着不同的语法而已.对于第一天学习Java,难度不是很大,对于老师讲的内容,自己多练习练习就好. 虽然第一天老师讲的内容不多,自己也练了很多次,但对于以后的学习也不能放松.以后的每天老师白天讲的知识一定要听懂,然后自己要勤加练习,老师布置的作业一定要自己完成,如果

第一次接触实际环境---NAT转换

今天在技术群里,有个做软件的哥们公司里面要安装网络,就剩一个NAT了,后来我就主动接茬,其实没接触过真实的网络,第一次接触我也挺紧张的,第一次就这么破了^_^,其实很简单,但是我很高兴,那就给大家讲一下咯\(^o^)/~ 今天原本要用NAT的但是考虑到他公司的电脑多,没用NAT,用的PAT 先说一下NAT和PAT的区别吧 NAT的地址转换是指每个内网地址都被转换成ip地址+源端口的方式,这需要公网ip地址为多个.而PAT由于ip地址不足够,就会出现内网地址被转换成ip地址+端口段的形式,这样的公

第一次接触shiro --- 开源之旅

1)shiro的身份验证过程在外界主要是和subject打交道,就行登录 3)SecurityManage负责整个身份验证的过程 2)和对于整个过程需要个来源,就是realm 第一次接触shiro --- 开源之旅

第一次接触OC多态,动态类型与动态绑定

多态:允许不同的类定义相同的方法. 动态类型:程序直到执行时才能确定所属的类. 动态绑定:程序直到执行时才能确定实际要调用的方法. id类型:一种通用的对象类型,也就是说,id可以用来存储属于任何类的对象,让不同类的输出不用特定设定,通用一个id类型就好. 多态的出现时为了让不同的类能使用同明的方法.比如add,这个让程序的可读性大大提高,也降低了编程难度.add就是+,哪种类型的+都用add标明方法,清晰易懂. 动态类型与动态绑定是为了解决随多态的便利而引起的弊端,有了动态类型与动态绑定,不用

个人理解去搭建SSH三大框架spring管理配置文件(初学第一次接触SSH)

<bean id="dataSuorces" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="oracle.jdbc.OracleDirver"/>(oracle数据库) <property name="url"