zoukankan      html  css  js  c++  java
  • 3、数据类型

    三、数据类型

    JavaScript 中的数据类型分为原始类型和对象类型

    • 原始类型
      • 数字
      • 字符串
      • 布尔值
    • 对象类型
      • 数组
      • “字典”
      • ...

    特别的,数字、布尔值、null、undefined、字符串 是不可变。



    // null、undefined null是JavaScript语言的关键字,它表示一个特殊值,常用来描述“空值”。 undefined是一个特殊值,表示变量未定义。<br><br>

    // undefined [NaN] undefined表示未定义值。



    1、数字Number 

       JavaScript中不区分整数值和浮点数值,JavaScript中所有数字均用浮点数值表示。下面来看一下代码示例:

       JavaScript中不区分整数值和浮点数值,JavaScript中所有数字均用浮点数值表示。


    转换:

    •parseInt(..)    将某值转换成数字,不成功则NaN

    •parseFloat(..) 将某值转换成浮点数,不成功则NaN


    特殊值:

    • NaN,非数字。可使用 isNaN(num) 来判断。

    • Infinity,无穷大。可使用 isFinite(num) 来判断。



    代码展示:
    <body>

    <
    script type="text/javascript">

    var num1 = new Number(123); //创建了一个数字类型的对象
    var num3 = Number(456);   // 456
    var num2 = 666;

    var s1 = 's123';
    var num4 = parseInt(s1);

    console.
    log(num1.valueOf(),num2,num3);
    console.
    log(num4); // NaN
    if(isNaN(num4)){
    console.
    log('not a number'); // not a number
    }
    else {
    console.
    log('a number');
    }
    console.
    log(isFinite(num3)); // 是否是有限值 true Infinity表示无穷大。
    console.log(typeof num3); // 'number' 返回的是字符串
         var a = 1222.4444444;
         console.log(a.toFixed(2)); // 1222.44
         console.log(a.toExponential(3)); // 1.222e+3 


    </script>
    执行结果:



    2、字符串常用方法及属性

    调试的地方可以在google chrome 上进行测试,F12点击"Console"



    字符串是由字符组成的数组,但在JavaScript中字符串是不可变的:

    可以访问字符串任意位置的文本,但是JavaScript并未提供修改已知字符串内容的方法。

    常见功能:

    obj.length                           长度
     
    obj.trim()                           移除空白
    obj.trimLeft()
    obj.trimRight)
    obj.charAt(n)                        返回字符串中的第n个字符
    obj.concat(value, ...)               拼接
    obj.indexOf(substring,start)         子序列位置
    obj.lastIndexOf(substring,start)     子序列位置
    obj.substring(from, to)              根据索引获取子序列
    obj.slice(start, end)                切片
    obj.toLowerCase()                    大写
    obj.toUpperCase()                    小写
    obj.split(delimiter, limit)          分割
    obj.search(regexp)                   从头开始匹配,返回匹配成功的第一个位置(g无效)
    obj.match(regexp)                    全局搜索,如果正则中有g表示找到全部,否则只找到第一个。
    obj.replace(regexp, replacement)     替换,正则中有g则替换所有,否则只替换第一个匹配项,
                                         $数字:匹配的第n个组内容;
                                         $&:当前匹配的内容;
                                         $`:位于匹配子串左侧的文本;
                                         $':位于匹配子串右侧的文本
                                         $$:直接量$符号

    a.replace(/d+wd+/g, "$2eric$1") #不加分组的正则,后面的$不代表任何意义 "alsdf$2eric$1dsf21sfd" $1 $2 代表分组 a.replace(/(d+)w+(d+)/,"$2"+"eric"+"$1") # w+代表字母与数字 贪婪匹配 "alsdf1eric123sfd" a.replace(/(d+)[a-zA-Z]+(d+)/g,"$2"+"eri"+"$1") "alsdf21eri123sfd" $&代表正则内的所有匹配内容。
    a.replace(/(d+)w+(d+)/,":before:"+"$&"+":after:") "alsdf:before:123dsf21:after:sfd"




    obj.trim()           #去除空格
    var a = "  Luotianshuai  "
    undefined
    a.trimLeft()      #去除左边的空格"Luotianshuai  "
    a.trimRight()   #去除右边的空格"  Luotianshuai"
    a.trim()            //去除两边的空格
    "Luotianshuai"

    a
    "  Luotianshuai  "    #这里可以发现我执行了上面的去除空格的命令之后,实际的值是没有改变的

    b = a.trim()
    "Luotianshuai"       #但是我们可以通过赋值来改变他b
    "Luotianshuai"


    obj.charAt(index)   # 根据索引获取字符串里的字符
    b
    "Luotianshuai"
    b.charAt(0)
    "L"
    b.charAt(1)
    "u"
    b.charAt(2)
    "o"




    obj.substring(start,end)  #获取字符的子序列,类似于切片 
    b
    "Luotianshuai"
    b.substring(0,3)
    "Luo"




    obj.indexOf(char)   #去字符串找指定的字符的索引值是多少
    b
    "Luotianshuai"
    b.indexof("t")
    3

    obj.length      # 获取字符串的长度
    b
    "Luotianshuai"
    b.length
    12




    3、布尔类型(Boolean)

    布尔类型仅包含真假,与Python不同的是其首字母小写。

    • ==      比较值相等
    • !=       不等于
    • ===   比较值和类型相等
    • !===  不等于
    • ||        或
    • &&      且

    布尔类型;例子测试。

    a = 123 b = "123" "123" c = 123 >> typeof a "number" >> typeof b "string" >> typeof c "number" >>a == b true >> a === b false >> a === c true >> a !== b true >> a != b false




    5、数组


    常用方法:

    添加 obj.push(ele) 追加 obj.unshift(ele) 最前插入 obj.splice(index,0,'content') 指定索引插入 移除 obj.pop() 数组尾部获取 obj.shift() 数组头部获取 obj.splice(index,count) 数组指定位置后count个字符 切片 obj.slice(start,end) 合并 newArray = obj1.concat(obj2) 翻转 obj.reverse() 字符串化 obj.join('_') 长度 obj.length


    声明一个数组和python中的列表类似

    a = [11,22,33,44] #声明一个数组
    [11, 22, 33, 44]

    插入

    a = [11,22,33,44] #声明一个数组
    [11, 22, 33, 44]
    a.push(55) #在数组最后增加一个元素
    #这里是数组的长度
    a
    [11, 22, 33, 44, 55]
    a.unshift(00) #在数组最前面增加一个元素
    #长度
    a
    [0, 11, 22, 33, 44, 55]
    a.splice(3,0,'insert')  #在指定的索引增加一个元素,括号内(3为索引值,0为固定值,要插入的内容)
    []
    a
    [0, 11, 22, "insert", 33, 44, 55]
    a.unshift(100)


    移除

    a [100, 0, 11, 22, "insert", 33, 44, 55] a.pop() #从尾部获取 a.shift() #从开头获取 a [0, 11, 22, "insert", 33, 44] a.splice(3,1) #从指定位置获取,括号内参数为(元素的索引,后面为索引后的元素个数,包含本身) ["insert"] a [0, 11, 22, 33, 44]



    切片

    a
    [0, 11, 22, 33, 44]
    a.slice(1,3)
    [11, 22]
    a
    [0, 11, 22, 33, 44]

    合并

    a = [11,22]
    [11, 22]
    b = [44,55]
    [44, 55]
    a.concat(b)
    [11, 22, 44, 55]
    a
    [11, 22]
    b.concat(a)
    [44, 55, 11, 22]



    反转

    a
    [11, 22]
    a.reverse()
    [22, 11]
    a
    [22, 11]

    字符串格式化

    a
    [22, 11]
    a.join('_')
    "22_11"
    a
    [22, 11]

    数组长度


    a [22, 11] a.length 2




    6、字典

    字典是数组的一种特殊形式

    var items = {'k1': 123, 'k2': 'tony'} a = {"k1":"alex",11:22} Object {11: 22, k1: "alex"}
    a[11] 22 a["k1"] "alex"













    GitHub:https://github.com/ju-do-it
    个人博客:https://zhangju.lookdoc.cn
    博客园:https://www.cnblogs.com/zhangju
    Copyright ©2020 Ju-do-it
    【转载文章务必保留出处和署名,谢谢!】
  • 相关阅读:
    The file 'MemoryStream' is corrupted! 的解决办法
    U3D包大小优化之microlib
    U3D中IOS平台泛型方法尽少使用
    {转}Unity3d+Jenkins 自动编译iOS、Android版本(U3D远程自动打包工具)
    Unity Remote 4安卓机使用指南
    2dtoolkit获取sprite像素大小的方法
    国行手机安装GOOGLE PLAY
    手机网络上YOUTUBE用fqrouter2~~
    U3D4.X版本无法安装MONODEV编辑器
    UNITY3D在IOS开发下的反射机制限制
  • 原文地址:https://www.cnblogs.com/zhangju/p/5789814.html
Copyright © 2011-2022 走看看