前面有介绍 JavaScript 资料分成七种原始型别以及物件型别,关於型别 JavaScript 有一种广为人知的特性:动态型别。
JavaScript 之所以会是动态行别,就要提到到实做中 JavaScript 最容易碰上的底层问题之一 『强制转型』,而 强制转型 又分成两种
今天就会介绍大致上有哪些语法是显性转型,下篇则会再介绍隐含转型。
而这两种术语并没有特别明确的规范,他只是相对上的术语,因此有些状况看起来是 :似隐似显的 但其实不用太纠结是分类在哪种,知道如何使用就没有问题了,两种转型范例:
var test1 = '123'
test1 = Number(test1 )//显性转型
var test2 = 456
test2 = test2 + '1' //隐性转型
在 『你不懂JS』一书中是将显性转型分成以下三种:
『你不懂JS』一书这种分法确实比较全面,但对我们这些脑袋比较简单的人来说,反而不好理解,这边试者改成比较容易理解三种:
这边也在根据上面三种分类,稍微说明有哪些语法。
String()
方法var test3 = 123
test = String(test3)
typeof(test3 ) // '123'
toString()
var array = ["R","y","d","e","r"]
var test4 = array.toString() //'R,y,d,e,r'
Number()
、 parseInt()
方法var string = '123'
var test5 = Number(string) //123
var test6 = parseInt(string) // 123
+
、-
var string = '123'
var test7 = + string //123
不过这种方法确实容易跟 二元运 算术运算子的 +
、 -
写法搞混,也因此实做确实比较少看到这种写法。
Boolean()
方法var string = 'test'
var array =[]
var number = 0
var not = null
var boolean1 = Boolean(string) // true
var boolean2 = Boolean(array) // true
var boolean3 = Boolean(number) // false
var boolean4 = Boolean(not)//false
以上大概就是常见的显性转型,值得一提的是使用 new String()
、new Number()
等等的 new
建构式方法他们并不算在强制转型的范畴中,因为这些建构式制作出来的都会物件型别的资料。
当然还有一种状况是,将变数的值调整成另一种型别的值,这种作法,也是属於显性转换的一种,不过这部分一看就知道,因此上述都没有特别提出来,例如:
var test8 = 123
test8 = 'test'
使用 Python Flask 架设 API 吧! 今日学习目标 API 观念讲解 什麽是 API?...
Redis丛集架构目标情境 高效能与可依照效能需求线性扩增节点达到1000个 最少3个Master,...
还记得之前我们介绍过 Cold Observable v.s. Hot Observable 吗? ...
目标: 爬取股价,使用线性回归预测股价 from datetime import time from...
只说你敢当面对那个人说的话 越少在背後议论别人 会妨碍效率且引起负面感受的八卦就会减少 诚实就像看...