zoukankan      html  css  js  c++  java
  • JS数据类型与类型转换

    1. 数据类型

    (5个基本数据类型)number  string Boolean undefined null  和一个引用类型 object

    • 对象就是由一些彼此相关的属性和方法集合在一起而构成的一个数据实体。常见的对象有array,window,document等。

    2. 判断类型(typeof)

    7种:number string Boolean undefined object function symbol   https://www.cnblogs.com/sker/p/5474591.html

    • 值类型 number string Boolean undefined 一个值占一个空间
    • 引用类型 object function  很多值占一个空间
    • [] {} null 是object类型

    3. 类型转换

    (1)强制转换

    • 将变量转换成字符串:toString()或者 String()
    • Number() 转换成数字,parseInt() 转换成整数,parseFloat()转换成浮点数。
    • Boolean()
    var test = parseInt(“blue”); //returns NaN
    var test = parseInt(“1234blue”); //returns 1234
    var test = parseInt(“22.5”); //returns 22
    var test = parseFloat(“1234blue”); //returns 1234
    var test = parseFloat(“22.5”); //returns 22.5

     

    (2)隐式转换(隐式转换通常发生在运算符加减乘除,等于,还有小于,大于。。。)

    • 字符串加数字,数字就会转成字符串 100+‘10’=‘10010’
    • 数字减字符串,字符串转成数字。如果字符串不是纯数字就会转成NaN。字符串减数字也一样。两个字符串相减也先转成数字。
    • 乘,除,跟减的转换也是一样
    console.log(10+'20') //2010
    
    console.log(10-'20')//-10 number
    console.log(10-'one') //NaN not a number
    console.log(10-'101a') //NaN
    console.log(10*'20') //200 number
    console.log('10'*'20') //200 number
    console.log(20/'10') //2 number
    console.log('20'/'10') //2 number
    console.log('20'/'one') //NaN

    ==:等同,比较运算符,两边值类型不同的时候,先进行类型转换,再比较;

    ===:恒等,严格比较运算符,不做类型转换,类型不同就是不等;

    Object.is()ES6新增的用来比较两个值是否严格相等的方法,与===的行为基本一致。

    Object.is(),其行为与===基本一致,不过有两处不同:

    • +0不等于-0
    • NaN等于自身。
    • +0 === -0 //true
      NaN === NaN // false
      
      Object.is(+0, -0) // false
      Object.is(NaN, NaN) // true

    何时使用==、===: 用 if(obj.a==null) 代替  obj.a===null || obj.a===undefined,其他情况用===。

    关于== :

    字符串和数字比较时,字符串转数字

    数字与布尔比较时,布尔转数字(1、0)

    字符串和布尔比较时,两者转数字

    console.log(undefined==null) //true
    console.log('0'==0) //true 字符串转数字
    console.log(0==false) //true 布尔转数字
    console.log('0'==false) //2个都转成数字
    console.log(null==false) //false
    console.log(undefined==false)//false

    关于===:

    类型不同:false

    类型相同:NaN不等于NaN

         new Object 不等于 new Object 

     4. 类型检测

    typeof  无论引用的是什么类型的对象,它都返回 “object”。

    这就需要用到instanceof来检测某个对象是不是另一个对象的实例。

    instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性。

    语法:object instanceof constructor

    参数:object(要检测的对象.)constructor(某个构造函数)

     5. 封装函数实现类型判断

    function type (obj) {
                var cache = {
                  '[object Number]': 'number',
                  '[object Array]' : 'array',
                  '[object Object]' : 'object',
                  '[object String]' : 'string',
                  '[object Boolean]' : 'boolean',
                  '[object Null]' : 'null',
                  '[object Undefined]' : 'undefined',
                  '[object Function]' : 'function',
                      '[object RegExp]' : 'regexp'
                }
                
                return cache[Object.prototype.toString.call(obj)];
              }

     6. 内置函数(数据封装类对象)

    Number String Boolean Object Array Function Date RegExp Error

  • 相关阅读:
    php 压缩文件 zip
    php 创建返回结果配置文件 实例
    php 生成xml文件
    php 获取读取文件内容
    基于JAVA语言的多线程技术
    Java HTTP请求
    TCP与UDP
    VC6.0 调试.dll文件
    [JNI] Java 调用 C++ dll
    HTTPS与SSL
  • 原文地址:https://www.cnblogs.com/sarah-wen/p/10806813.html
Copyright © 2011-2022 走看看