升阶之JS在线

本文详细介绍了JavaScript中的数据类型,包括typeof操作符、Number、NaN、Infinity、Boolean转换以及Object的使用。同时,文章还讲解了一元、算术、关系、逻辑以及赋值运算符的用法,特别关注了在不同数据类型之间进行运算时的转换规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据类型

typeof输出值

  • string number object boolean undefined function
    不可能是null
function fn(){}
alert(typeof fn)  //function

\ 转义

alert("hello 'wally'")
alert('hello \'wally\'')
console.log('hello \n world!')
console.log('hello \r world!')
console.log('hello\\world')
console.log('hello \" world')
console.log('hello ' + 'world string number \object boolean  null undefined  function')

toString()

  • 转换成string类型,参数可以添加进制
var num = 10
var bool = true
console.log(typeof num.toString())
console.log(num.toString(2)) // 2进制 1010
console.log(num.toString(8)) // 12
console.log(num.toString(16)) // a
console.log(bool.toString())  // 'true'

Number

  • NaN
    • NaN: not a number 不是一个数字, 但是是number类型
console.log(undefined + 23)     //NaN
console.log(typeof NaN)     //number
  • 跟谁都不相等 包括自己也不相等
console.log(123 == 123)     //true
console.log(NaN == NaN)     //false
  • isNaN() 方法 检测参数值 是否是 NaN
console.log(isNaN(undefined + 23))     //true
console.log(isNaN(23))     //false
  • 科学计数
console.log(3.1e10)     //31000000000
console.log(3e-2)     //0.03
  • Infinity
console.log(3.1e100000)     //Infinity 超出范围 无限大
console.log(-3.1e100000)     //-Infinity 超出范围 无限小
//是否在范围中,在 true,不在 false
console.log(isFinite(3.1e10000))  //false
console.log(idFinite(3.1e2))     //true
  • Number()
    • 将参数转换成number类型, 可以转换任意类型
console.log(typeof Number('123'))     //number
console.log(Number(true))     //1
console.log(Number(false))     //0
console.log(Number('false'))     //NaN
console.log(Number(''))     //0
console.log(Number(undefined))     //NaN
console.log(Number(null))     //0

console.log(Number('08.970'))     //8.97
  • parseInt(),parseFloat()
    • parseInt() 转换成整型
    • parseFloat() 转换成浮点型
console.log(parseInt('123.056'))     //123
console.log(parseFloat('123.23'))    //123.23
console.log(parseInt(true))     //NaN
  • 精度问题与toFixed()
    • 浮点数运算可能会有精度问题
    • toFixed() 参数 保留几位小数
console.log(0.1 + 0.2)    //0.300000000000000004
console.log((0.1 + 0.2).toFixed(2))     //0.30
  • Boolean
    • Boolean() 将参数转换成 布尔值
      • 字符串 -> 布尔型
        • 空字符串 -> false
      • 数字 -> 布尔
        • 0,NaN -> false
          • undefined -> false
          • null -> false
var a;  // undefined
console.log(Boolean(123))    // true 
console.log(Boolean('123'))  // true   
console.log(Boolean(3e10000)) // true    
console.log(Boolean([]))     // true     
console.log(Boolean([1,2,3])) // true    
console.log(Boolean({}))     // true   
console.log(Boolean({name: 'wally'}))  // true  
console.log(Boolean(''))     // false
console.log(Boolean(a))      // false
console.log(Boolean(0))      // false
console.log(Boolean(NaN))    // false   
console.log(Boolean(null))   // false
  • Object
    • 数组(列表) Array
    • 对象(字典) Object
    • 由一组或多组键值对组成,键值对用:链接,每一组值之间用,分割
    • 获取键对应的值: 对象.键名 或 对象:[‘键名’]
    • 键名一般使用字符串,键值可以是任意数据类型
var obj = {
      name: 'wally',
      age: 17,
      sex: 'man',
      favs: ['篮球', '足球', '排球'],
      lesson: {
        id: 123,
        name: 'web'
      },
      run: function () {
        alert('running')
      }
    }
    console.log(obj.name) // wally
    console.log(obj.favs) // ["篮球", "足球", "排球"]
    for(var i=0;i<obj.favs.length;i++){
      console.log(obj.favs[i])
    }
    console.log(obj.lesson.id) // 123
    obj.run()
  • Array
    • 数组
    • length属性: 数组包含元素的个数
    • 索引(下标): 数组[索引] 获取对应位置的元素 索引从0开始
var arr = ['123', 250, true, ['wally', 'age', 17]]
    console.log(arr[0])      // 123
    console.log(arr[3])      // ["wally", "age", 17]
    console.log(arr[3][0])   // wally
    console.log(arr.length)  // 4 

    for(var i=0;i<arr.length;i++){
      console.log(arr[i])
    }

    // 只有一个参数的时候  参数指的是 length
    var arr1 = new Array(4)
    console.log(arr1)

    // 多个值的时候  参数就是数组中的每个元素
    var arr2 = new Array(1,2,3,4) // [1, 2, 3, 4]
    console.log(arr2)

    console.log(typeof arr)  // object

运算符

  • 一元运算符
    • 只能操作一个值得运算符叫做一元运算符
    • 在没有赋值操作,前置和后置是一样的。
    • 有赋值的情况下:
      • 符号前置:先运算后赋值
var a = 3
var b = a++  // a++  => a = a+1
alert(b)  // 3 
alert(a)  // 4
如果将上边的 ++a 改成 a++ ,输出结果为 b=3  a=4
如果将上边的 ++a 改成 a-- , 输出结果为 b=3  a=2
如果将上边的 ++a 改成 --a , 输出结果为 b=2  a=2
var a = 3
alert(a--) //3
alert(a)   //2
如果将上边的 a-- 改成 --a ,结果为 先输出 2,后输出 2
如果将上边的 a-- 改成 a++ , 结果为 先输出 3,后输出 4
如果将上边的 a-- 改成 ++a , 结果为 先输出 4,后输出 4
  • 算术运算符
    • 加法: 数字 + 字符串 ==> 字符串拼接 数字会先转换成字符串 然后拼接
    • 减法: 减法运算时 字符串会被转唤成数字, 然后再运算
    • 乘法: 乘法运算时 字符串会被转唤成数字, 然后再运算
    • 除法: 除法运算时 字符串会被转唤成数字, 然后再运算
    • 取模: 除不动的情况,就是前面这个数
alert('3' - '1.5')    //1.5
alert(3 - 2)    //1
alert('123' + 20)    //12320
alert('123' - 0 + 20)    //143

alert('3' * '2')     //6
alerrt(1 / 3)     //0.333333333333
alert('3' /2)     //1.5
alert('30' / '10')     //3

alert(9 % 4)     //1
alert(3 % 3)     //0
alert(1 % 3)     //1
alert(7 % 9)     //7
  • 关系运算符
    • >
    • <
    • >=
    • <=
    • == 值一样即可 数据类型不需要统一
    • === 全等 数据及值都必须一样
    • != 不等于 对应于==
    • !== 不全等 对应于===
alert(2>=2) // true
alert(3>2)  // true

alert(2 == 2)  // true
alert(2===2)   // true

// === 全等 数据及值都必须一样
alert('2' == 2)   // true
alert('2' === 2)  // false

alert( 3 != 2)  // true
alert('2' != 2) // false
alert('2' !== 2) // true 
  • 逻辑运算符
    • && 与: 全真才真,有假则假
    • || 或: 有真则真,全假才假
    • ! 非: 取反
alert(3>2||3>4)    //true

alert(!false)   //true
alert(!(3 > 2))  //false
  • 赋值运算符
    • =
    • +=
    • -=
    • *=
    • /=
    • %=
var a = 'abc'
a += 'def'
alert(a)  //abcdef

var a = 20
a *= 3
alert(a)   //60
如果将 *= 改成 /=,则输出结果为 6.66666666666667
如果将 *= 改成 %=,则输出结果为 2
  • 三目运算符
// 条件 ? 条件是true走这儿 : 否则走这儿
3>2 ? alert('3>2') : alert('3不大于2')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值