原理
javascript是一门弱类型语言。
弱类型语言 是相对强类型语言来说的,在强类型语言中,变量类型有多种,例如int char float boolean 等,不同的类型相互转换有时需要强制转换。
javascript只有一种类型var ,为变量赋值时会自动判断类型并进行转换,所以javascript是弱语言。
在别的编程语言中,会对变量的类型有严格的限制,之间的转换也有规定。开始定义一个变量,是整型它就只能是整型,是字符串它就必须是字符串。
而JS就不同了,变量声明的时候不用规定是什么类型的,用的时候它自己根据你赋的值判断。
javascript虽然是一门弱类型语言,但还是有自己的数据类型,其中,
基本数据类型有:number、string、boolean、undefined、null
引用类型有:object、function
举个例子:
var a = "100";
var b = 11;
var c = 9;
console.log(a+b);
console.log(typeof(a+b));
console.log(a+b-c);
console.log(typeof(a+b-c));
输出结果为:
10011
string
10002
number
这是因为在javascript做运算时,会进行隐式转换。a为string类型,b为numer进行相加运算,首先会先将b转换为string类型,进行字符串的拼接运算。a+b运算之后得到的是一个string类型的10011,这时再跟c去做减法,显然字符串减number是行不通的。这时就会把string类型转换为number再去做减法运算。
如有问题请联系我~
欢迎加入QQ群: