以Java为例:
int x
在宣告x变数时,使用了int这个关键字让x的型别定在数字型别,而不能更改,如果企图更改放入非整数的值 :
int x
x = 'hi'
编译时就会出现以下错误
HelloWorld.java:5: error: incompatible types: String cannot be converted to int
静态型别的语言十分严谨,在语法撰写时会相对麻烦(以JavaScript的角度看XD),但相对的可以减少很多因为型别所导致的Bug。
以JavaScript为例子:
let y = 100
y = '100'
在JavaScript中,在编写的过程中可以任意变更变数的型别,在执行(Runtime)时并不会报错。
一样以Java为例:
int x = 100 + "100"
System.out.println(x)
出现编译错误:
HelloWorld.java:4: error: incompatible types: String cannot be converted to int
Java并不会自动转换型别去加总,如果是想要实现100+100的效果,可以使用以下方法:
int x = 100 + Integer.parseInt("100");
System.out.println(x); // 200
这就是所谓的强型别,不会隐性的转换变数的型别。
一样以JavaScript为例子:
let a = 123 + "456";
console.log(a) // 123456
成功执行,并且没有错误讯息,只是JavaScript预设会把数字转换为字串,如果目标是123+456的话可以使用以下方法:
let a = 123 + Number("456")
console.log(a) // 579
弱型别最常导致Bug的情况,除了混用不同型别去做数学运算或是字串的串接,另一个就是允许不同型别的比较:
let a = 123
let b = "123"
console.log(a==b,a===b) // true, false
以一张图可以清楚知道常见的语言型别特性
(Source:动态语言、静态语言、强型别和弱型别)
透过以上的介绍可以知道JavaScript是属於动态弱型别语言,这样的组合让JavaScript在撰写上相对松散与不安全,但是JavaScript终究是动态网页不可缺少的角色,这也是为什麽TypeScript的出现,长期而言,在一些大型专案有助於开发与维护的稳定性。
参考资料:
动态语言与静态?直译与编译?强型别与弱型别?
资料型态的梦魇
>>: Day 14 ( 中级 ) 键盘钢琴 ( 音符动画 )
前言 随着网路逐渐普及,越来越多人选择'网购',而网购中最後结帐的部分极为重要。 今天要来讲讲:离线...
第一次後制工作做到怀疑人生 0.0 看一次就发现一次AWS帐号的个资出现在画面上,每看一次就抓到一...
前面把有依赖关系的 Component 都讲一讲之後,今天就来带过其他的 UI 元件吧,因为想介绍...
Dio Dio是 http request的framework 也可以用内建的HttpClient或...
接续昨天我们要决定使用哪一个前端框架 最後我选择使用vuetify 使用前端框架的用意是让我们的网站...