Wyszukaj / o blogu

JavaScript - konwersja/translacja pomiędzy numbers i string

Opublikowano ptk 10 kwietnia 2020 w javascript • 2 min read

W przy pomocy metod istnieje możliwość wymuszenia konwersji różnego typu danych (boolean, string, numbers)

W ten sposób można przekształcić boolean lub number w string

Konwersja na string String(), x.toString()

String(123)        // '123'
String(-12.3)      // '-12.3'
String(null)       // 'null'
String(undefined)  // 'undefined'
String(true)       // 'true'
String(false)      // 'false'

x = 50
x.toString() // '50'
(123).toString()
null.toString() // Cannot read property 'toString' of null

false.toString() // 'false'
String(true) // 'true'

String(Date()) // "Wed Apr 29 2020 11:49:20 GMT+0200 (Central European Summer Time)"
Date().toString() // "Wed Apr 29 2020 11:49:20 GMT+0200 (Central European Summer Time)"

W ten sposób można przekształcić boolean lub string w number -> Number(), parseInt(), parseFloat()

Number(null)                   // 0
Number(undefined)              // NaN
Number(true)                   // 1
Number(false)                  // 0
Number(" 12 ")                 // 12
Number("-12.34")               // -12.34
Number("\n")                   // 0
Number(" 12s ")                // NaN
Number(123)                    // 123
Number("")                     // 0
Number("99 88")                // NaN
Number(new Date("2020-09-30"));    // 1601424000000

Zmienia string w integer

parseInt('123.32') // 123

Zmienia string w float

parseFloat('123.32') // 123.32

Pozwala na łączenie z metodami liczb

Number('154.223').toPrecision(4) // 154.2

W ten sposób można przekształcić boolean do stringu w number Boolean()

Boolean('')           // false
Boolean(0)            // false     
Boolean(-0)           // false
Boolean(NaN)          // false
Boolean(null)         // false
Boolean(undefined)    // false
Boolean(false)        // false

Domniemane (automatyczne) wymuszanie typów

Tak zwane domniemane wymuszenie typów (type coersion) jest procesem konwersji danych z jednego typu na inny bezpośrednio przez JS - to może dokonać się zarówno na typach prymitywnych jak i obiektach.

Do takiego wymuszenia zachodzi wówczas gdy dokonujemy porównania danych bez sprawdzenia ich typu zatem zastosowanie == zamiast ===

'true' == true // true
true' === true // false

12 / "6" // 2

12 > "6" // true

12 < "6" // false

Do wymuszenia może dojść również w trakcie podjęcia próby sumowania różnego typu danych

x = 5

x + 5 // 10

'5' + 5 // 10

'five' + 5 // five5

true + 5 // 6 (ponieważ => true = 1)

false + 5 // 5 (ponieważ => false = 0)

true + true // 2

W przypadku obiektów

[1,2,3] == [1,2,3]       // false (zmiana nie jest wymuszana, ale sprawdzana jest instancja a nie zawartość)
['x'] == 'x'             // true

Źródła:

https://www.w3schools.com/js/js_type_conversion.asp https://www.freecodecamp.org/news/js-type-coercion-explained-27ba3d9a2839/