Javascript 是动态型别的语言
必须在执行阶段才会赋予确立型别
以下面的例子说明
var name = '小明' // 创造阶段 var name; // 执行阶段 name = '小明';
name 这个变数要到了执行阶段才会被确立型别为 '小明' 的字串。
这个时候,我们可以利用 typeof
来做型别的确认
var name = '小明' console.log(typeof(name)); // string console.log(typeof('小明')); // string
透过 typeof
,我们可以知道执行到现在的时间点,该变数的型别为甚么。
同时直接检查值得型别,也可以得到预期的结果,例如检查为 '小明' 字串,得到的回应就是 string。
再来看看另一段範例程式:
var num = 1; console.log(typeof(num)); // number num = '文字'; console.log(typeof(num)); // string
所以透过这段程式码的範例可以看到,变数的型别会随着赋值不同而转换成不同的型别。
另外再行别转换的内容中,也有特别要注意的两个陷阱。
显性的转换 Explicit conversion
就是变数直接被赋予另外一个值得时候,就称为显性的转换。
如同上方的範例,num 这个变数一开始被赋予数字 1,但后来又被赋予字串 '文字'。
所以在被赋值完之后,其型别就从数字(number)转变为字串(string)。
隐性的转换 Implicit converison
他在转换的过程中,可能会透过某些运算方式,改变其变数的内容以及型别,以下举两个例子:
var num = 1; num = num + ''; console.log(num, typeof(num)); // 1, string
第一个就是在针对数字的时候,+上字串的内容,该变数就会变为字串。
第二个内容接续刚刚的程式码:
var num = 1; num = num + ''; console.log(num, typeof(num)); // 1, string num = num * 3; console.log(num, typeof(num)); // 3, number
对写入数字字串的变数进行乘法的话,则会再被转换为数字型别。
以上就是这章的分享,希望有帮助到大家,汪汪~