0
点赞
收藏
分享

微信扫一扫

TypeScript基础知识(1)JavaScript语言特性

elvinyang 2022-02-14 阅读 41

强类型和弱类型

强类型的语言层面限制函数的实参类型必须与形参类型相同,弱类型语言层面不会限制实参的类型,比如下面的js代码。(不过也有说法是强类型语言不允许任何的隐式类型的转换,弱类型的语言则允许任意数据隐式类型转换,强弱类型定义比较模糊)

function foo(num){
    console.log(num);    
}
foo(100)//ok
foo('100')//ok
foo(parseInt('100'))//ok

很多时候js代码的类型错误是在逻辑判断后手动抛出的,而不是在语言层面上就报错了。

静态类型语言和动态类型语言

1.静态类型语言:一个变量在声明时它的类型就是确定的,声明过后它的类型就不允许修改了
2.动态类型语言:在运行阶段才能够明确变量类型,变量的类型可以随时发生变化。动态类型语言中变量是没有类型的,变量存放的值是有类型的。而JavaScript就是标准的动态类型语言

var foo = 100;
foo = 'bar';//ok
console.log();

JavaScript类型系统特性

类型系统特性:弱类型且动态类型,比较灵活,但是缺失类型系统的可靠性。
JavaScript在早期应用简单,是一门脚本语言,没有编译环节,现如今web应用越来越复杂大型,缺失类型系统可靠性的缺点会被放大。

弱类型的一些问题

1.就像下面代码只有执行了才能抛出错误,在测试环境如果没有被检测出来就容易形成隐患

const obj = {};

setTimeout(()=>{
    obj.foo()
},10000)

2.会使函数的意义发生改变

function sum(a, b) {
      return a + b
    }
    console.log(sum(100, 100));//200
    console.log(sum(100, '100'));//100100

3.对象属性名会变成字符串

const obj = {};
    obj[true] = 100;
    console.log(obj['true']);

强类型的优势

1.错误更早暴露,在代码层面就已经报错,不会等到运行时再报错错误会更早提现出来。
2.代码更智能,编码更准确。
3.重构更加牢靠
4.减少不必要的类型判断

举报

相关推荐

0 条评论