zoukankan      html  css  js  c++  java
  • JS基础——数据类型

    前言

    JavaScript 是弱类型语言,而且 JavaScript 声明变量的时候并没有预先确定的类型,
    变量的类型就是其值的类型,也就是说变量当前的类型由其值所决定,夸张点说上一秒种的 String,
    下一秒可能就是个 Number 类型了,这个过程可能就进行了某些操作发生了强制类型转换
     
    js 数据分为两种类型:原始数据类型和引用数据类型。
    • 基本数据类型有:string、number、boolean、undefined、null 和 symbol(符号)
    • 引用数据类型有:Object、Function、Date、RegExp 等。

    基本数据类型的特点

    1. 基本数据类型是按值访问的,就是说我们可以操作保存在变量中的实际的值;
    2. 基本数据类型的值是不可变的,任何方法都无法改变一个基本数据类型的值
    let name = 'zhangsan'
      name.substr()
      console.log(name) // 输出:zhangsan
      let age = 'firstblood'
      age.toUpperCase()
      console.log(age) // 输出:firstblood

    substr()和 toUpperCase()方法后返回的是一个新的字符串,跟原来定义的变量 name 并没有什么关系。

         3.基本数据类型的赋值是简单的赋值(不影响原变量的值)

    let a = 18
    let b = a
    a++
    console.log(a) // 输出:19
    console.log(b) // 输出:18

    引用数据类型

    引用类型是存放在堆内存中的对象,变量其实是保存的在栈内存中的一个指针(保存的是堆内存中的引用地址),这个指针指向堆内存

    var obj1 = new Object()
    var obj2 = obj1
    obj2.name = '我有名字了'
    
    console.log(obj1.name) // 我有名字了

    数据类型转换

    转为字符串

    1、toString()方法:注意,不可以转 null 和 underfined

    2、String()方法:都能转

    let ab = 'zhangsan'
    let bc = null
    let cd = undefined
    console.log(ab.toString()) // 输出:zhangsan
    console.log(bc.toString()) // error 报错
    console.log(cd.toString()) // error 报错
    console.log(String(ab)) // 输出:zhangsan
    console.log(String(bc)) // 输出:null
    console.log(String(cd)) // 输出:undefined

    3、隐式转换:num + "",当 + 两边一个操作符是字符串类型,一个操作符是其它类型的时候,会先把其它类型转换成字符串再进行字符串拼接,返回字符串

    var a = true
    var str = a + ''
    console.log('str')

    转为数值类型

    1、Number():可以把任意值转换成数值,如果要转换的字符串中有一个不是数值的字符,返回 NaN

    2、parseInt()/parseFloat():parseFloat()把字符串转换成浮点数,parseFloat()和 parseInt 非常相似,

      不同之处在与 parseFloat 会解析第一个. 遇到第二个.或者非数字结束如果解析的内容里只有整数,解析成整数。

    var a = '12.3px'
    console.log(parseInt(a)) // 12
    console.log(parseFloat(a)) // 12.3
    let b = 'abc2.3'
    console.log(parseInt(b)) //NAN
    console.log(parseFloat(b)) //NAN
    3、isNaN()函数用于判断是否是一个非数字类型,如果传入的参数是一个非数字类型,那么返回 true,否则返回 false

    转换为 Boolean()

    除了 0 ''(空字符串) null undefined NaN 会转换成 false 其它都会转换成 true

    判断 JS 数据类型

    1、typeof()函数

    对于原始数据类型,我们可以使用 typeof()函数来判断他的数据类型。但他是没法用来区分引用数据类型的,因为所有的引用数据类型都会返回"object"。

    typeof 'seymoe' // 'string'
    typeof true // 'boolean'
    typeof 10 // 'number'
    typeof Symbol() // 'symbol'
    typeof null // 'object' 无法判定是否为 null
    typeof undefined // 'undefined'
    
    typeof {} // 'object'
    typeof [] // 'object'
    typeof (() => {}) // 'function'

    2、instanceof

    对于引用类型我们使用 instanceof 来进行类型判断。

    var obj = {}
    obj instanceof Object //true
    var arr = []
    arr instanceof Array //true

    3、Object.prototype.toString.call()

    在 javascript 高级程序设计中提供了另一种方法,可以通用的来判断原始数据类型和引用数据类型

    var arr = []
    Object.prototype.toString.call(arr) == '[object Array]' //true
    
    var func = function() {}
    Object.prototype.toString.call(func) == '[object Function]' //true

    4、constructor

    constructor 作用和 instanceof 非常相似。但 constructor 检测 Object 与 instanceof 不一样,还可以处理基本数据类型的检测。

    var aa = [1, 2]
    console.log(aa.constructor === Array) //true
    console.log(aa.constructor === RegExp) //false
    console.log((1).constructor === Number) //true
    var reg = /^$/
    console.log(reg.constructor === RegExp) //true
    console.log(reg.constructor === Object) //false
  • 相关阅读:
    php之static静态变量详解
    设计模式【代理模式】
    小牟Andorid下面MD5具体实现的思路总结
    ubuntu14.04安装MySQL
    Android手机定位技术的发展
    我不同意你,这是您的支持
    我要遵守11文章数据库设计指南
    quick-cocos2d-x游戏开发【3】——display.newSprite创建向导
    第二章 自己的框架WMTS服务,下载数据集成的文章1
    JSTL实现int数据的类型的长度
  • 原文地址:https://www.cnblogs.com/yf-html/p/12350363.html
Copyright © 2011-2022 走看看