1.1 JavaScript 类型

335 阅读1分钟

JS数据类型.png

类型转换

强制类型转换

测试用例 \ 方法''' ''abc''0''123''123.1''123.1.1''123.abc''123.1.abc''abc123''0x123''0X123'123123.10291291NaNtruefalsenullundefined
String()''' ''abc''0''123''123.1''123.1.1''123.abc''123.1.abc''abc123''0x123''0X123''123''123.1''0''291''291''NaN''true''false''null''undefined'
toString()''' ''abc''0''123''123.1''123.1.1''123.abc''123.1.abc''abc123''0x123''0X123''123''123.1''0''291''291''NaN''true''false''Cannot read property 'toString' of null''Cannot read property 'toString' of undefined'
Boolean()falsetruetruetruetruetruetruetruetruetruetruetruetruetruefalsetruetruefalsetruefalsefalsefalse
Number()00NaN0123123.1NaNNaNNaNNaN291291123123.10291291NaN100NaN
parseInt()NaNNaNNaN0123123123123123NaN2912911231230291291NaNNaNNaNNaNNaN
parseFloat()NaNNaNNaN0123123.1123.1123123.1NaN00123123.10291291NaNNaNNaNNaNNaN

强制类型测试方法

const fnArr = [
  String, 
  toString, 
  Boolean,
  Number, 
  parseInt, 
  parseFloat, 
]

const testArr = [
  '',
  ' ',
  'abc',
  '0',
  '123',
  '123.1',
  '123.1.1',
  '123.abc',
  '123.1.abc',
  'abc123',
  '0x123',
  '0X123',
  123,
  123.1,
  0,
  0x123,
  0X123,
  NaN,
  true,
  false,
  null,
  undefined
  // Symbol(123)
]

let arr = '| 测试用例 \\ 方法 |'

for (let v of testArr) {
  let n = ''
  if (typeof v === 'string') {
    n = `'${v}'`
  } else {
    n = `${String(v)}`
  }
  arr += ` ${n} |`
}

arr += '\n'

for (let v of testArr) {
  arr += '| :---: '
}

arr += '| :---: | :---: |\n'

for (let fn of fnArr) {
  console.log(fn)
  const res1 = []
  for (let val of testArr) {
    let v = null
    try {
      if (fn === toString) {
        v = val.toString()
      } else {
        v = fn(val)
      }
    } catch (error) {
      console.error(error.message)
      v = error.message
    }
    if (typeof v === 'string') {
      v = `'${v}'`
    }
    res1.push(v)
  }
  const res2 = `| ${fn.name}() | ${res1.join(' | ')} |\n`
  
  arr = arr + res2

}

console.log(arr)