如何理解js是一门弱类型的、动态型的语言

如何理解js是一门弱类型的、动态型的语言
x = 5; // 5
x = x + 'A'; // '5A'

上面代码中,变量x起先是一个数值,后来是一个字符串,类型完全由当前的值决定,这就叫弱类型。
弱类型的好处是十分灵活,可以写出非常简洁的代码。

x 可以一会是字符串,一会是浮点,这是动态。
3/“1.5” 这个数字除字符串合法是弱类型(场合时自动帮你转类型)

在Javascript中,变量是没有类型的,所以,你可以最初的时候声明为数字,然后在赋值为字符串,这叫动态类型。

动态/静态类型
值得是声明一个变量之后,它是否可以存储(指向)不同类型的变量。

比如C语言,变量声明的时候是数字类型的,这个变量就不能赋予整数类型的内容,这就是静态类型。
在Javascript中,变量是没有类型的,所以,你可以最初的时候声明为数字,然后在赋值为字符串,这叫动态类型

弱/强类型值的是
是否允许不兼容的类型进行运算。

比如在Javascript中,“4”-3的结果是数字1,这里字符串和数字做运算了。
强类型语言不允许两个不兼容的类型之间运算,弱类型的语言允许不兼容的类型之间运算