zoukankan      html  css  js  c++  java
  • 数据类型即其相互转换

    • JavaScript中数据类型有:
      • 三种基本数据类型: 数值,字符串,布尔;
      • 两种小数据类型:null,undefined;
      • 还有一个种复杂的数据类型:对象;
    • 检测数据类型可以用typeof操作符,注意typeof只是一个操作符;它会返回number,boolean ,string object , function,undefined等六种结果
    console.log(typeof 2);                      //number
    console.log(typeof '2'); //string
    console.log(typeof true); //boolean
    console.log(typeof undefined); //undefined
    console.log(typeof null); //object *null也是一个对象*
    console.log(typeof {name:'lazy',age:20}); //object
    console.log(typeof [1,2,3]); //object *数组是对象啊*
    console.log(typeof function(){}); //function
      • typeof的优先级
    console.log(typeof lazy+2);        //undefined1  typeof的优先级高于+ -等双目操作符
      • 对于尚未申明的变量,只能执行一项操作,那就是typeof;但需要注意对于未声明或者未初始化的变量执行typeof都会返回undefined;
    var lazy;
    //var chen;
    console.log(typeof lazy); //undefined
    console.log(typeof chen); //undefined
    • null和undefined类型
      • null(空对象指针),undefined(未赋值,未声明)【注:函数默认return的是undefined】
      • 实际上undefined是派生自null的,所以检测相等性是相等的;但用途不一样,比如如果定义的变量准备将来用于保存对象,那么最好将其初始化为null,这样也体现null作为空对象指针的性质。
    • 布尔类型
      • 显示转换成布尔类型可通过布尔操作符中的!!方式,或者调用Boolean()函数
      • 两个布尔值相加时会被转换成数字后再执行加,true+true=2;
      • 布尔类型的数据可以说在JS中是使用得最多的一种了,它对于流控制语句(如if语句)来说非常重要,这些语句中会自动执行Boolean转换,调用Boolean()函数:
        数据类型 转换为true的值 转换为false的值
        String 非空字符串 “”空字符串
        Number 非零数字(包括Infinity)   0和NaN
        Object(调用valueOf方法) 任何对象   null
        Undefined  —   undefined
        null  —   null
    • 数字类型
      • 数值字面量格式可以是十进制,八进制(第一位是0且后面跟八进制数字序列0~7),十六进制(以0x或0X开头,后面跟十六进制数字0~9及A/a~F/f);但计算时都是按照十进制来的;
      • 浮点数值计算会产生误差,对于极大极小的值可以用 e表示法
      • JS能够表示的最小数值保存在Number.MIN_VALUE中,最大数值保存在Number.MAX_VALUE
      • 当某次计算得到的结果超出了JS数值范围,如果这个结果是负数就会得到-Infinity,正数则Infinity,可以用isInfinity()来检测
      • NaN ,not a Number,用于表示本该得到一个数值操作数却未能得到的数值的情况(这样就不会报错了)     任何涉及NaN的操作都会返回NaN(如NaN/10 ,0/0也会得到NaN);NaN与任何值都不相等,包括它本身;可以用isNaN()来检测,isNaN()会把接受的参数首先转换成数值,如果能转换成数值则返回false,不能则true;
      • 数值转换:有三个函数Number(),parseInt(),parseFloat();Number()可用于任何数据类型;而parseInt()和parseFloat()则专门用于把字符串转换成数值的,但实际上可以直接用字符串减0的方式将其转换成数字
      • Number()的转换规则:
    console.log(Number(undefined));            //NaN
    console.log(Number(null)); //0
    console.log(Number('')); //0
    console.log(Number('0123')); //123 只包含数字
    console.log(Number(0xA)); //10 其他进制
    console.log(Number('abc')); //NaN 包含除上述两种的其他格式 则NaN
      • parseInt()的转换规则:
    console.log(parseInt(''));                 //NaN
    console.log(parseInt(' 1 23red')); //1 **开头忽略空格,遇到非数字则停止解析,包括小数点
    console.log(parseInt('-456')); //-456 开头为数字或负号
    console.log(parseInt('red123')); //NaN 开头
    console.log(parseInt('55blue66')); //55 遇到非数字则停止解析
    console.log(parseInt('0xA',16)); //10 十六进制,注意第二个参数基数
      •  parseFloat()
    console.log(parseFloat('0xA'));            //10 只支持十进制,八、十六进制会被转成0
    console.log(parseFloat('123')); //123 若可解析成整数则返回整数
      • 转换为数字表:
        转换为数字的结果 转换规则
        String>非空字符串  — 只有数字的话则十进制忽略前导的零(正负号或浮点均保留);若包含合法十六进制则转为十进制;其他格式的话会转换失败,则得到NaN
        Object  — 调用valueOf方法,直接得到数字;不行的话调用toString(),再对字符串按照前面的方法进行转换
        String>空字符串  0  —
        Undefined  NaN  —
        null  0  —
       
    • String类型
      • 转字符串常用的有toString()方法,更简洁的是将其与空字符串用‘+’号连接;除了null和undefined其他数据类型都有toString()方法来将其转换成字符串表现,null和undefined调用的是string();
      • 全角与半角的length一样;
      • escape ,unescape,encodeURL,decodeURL等等
      • 字符串都是常量,但是依然可以像对象一样使用.length等方法;
      • 对字符串的一些基本操作:
        • 取单个字符串建议用charAt()函数;
        • subString(start,stop)取包括start但不包括stop下标的子字符串,若只有一个参数,则从start到结束;
        • substr(start,length)取从开始到一定长度的子字符串;
        • indexOf(searchValue)用于检索指定字符串值位于字符串的位置,若不存在则返回-1;
      • 转换为字符串表:  都不变,对象将调用toString()方法
    • Object类型
      • 无序的名值对集合,包括数组,函数等;
      • 【注:JS中对基本数据类型的操作是直接对值进行操作,而对复杂对象则是通过引用来的】
      • 【注:null其实也是一个对象】
      • 可以用方括号加字符串的形式访问对象的属性,比如image['height'];
      • 用于字符串环境会调用对象的toString()方法,用于数字会优先调用valueOf()方法得到对象的数字或者布尔或者字符串表示;
      • 这里说一下数组:
        • JS不支持多维数组,但可以嵌套,举几个例子:
    var a= [];
    a[
    0]= 3;
    a[
    50]= {x:1 ,y:2 };     //可嵌套,数组是稀疏的,不会分配连续内存;
    a[salary] =2;            //非数字的下标会被转换成字符串,是给数组定义了一个命名属性, length并不会改变
    a[ -2.5] =3;            //同上
     
    • Tips:一般操作数据时将其转换成相同数据类型再操作;
    • Tips:常用  可将数值与空字符串连接以将其转换成字符串,可将字符串减0以将其转换成数字
     
  • 相关阅读:
    wamp配置虚拟主机
    php单例模式
    YII缓存操作
    YII的延迟加载
    之字形打印二叉树
    对称的二叉树
    二叉树的下一节点
    删除链表的重复节点
    链表中环的入口
    字符流中第一个不重复的字符
  • 原文地址:https://www.cnblogs.com/lazychen/p/5409377.html
Copyright © 2011-2022 走看看