zoukankan      html  css  js  c++  java
  • javascript学习3、数据类型、数据类型转换、运算符

    数据类型包括:基本数据类型和引用数据类型

    基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象。

    当我们把变量赋值给一个变量时,解析器首先要确认的就是这个值是基本类型值还是引用类型值

    一.基本数据类型

    1. number

    var a = 123;
    //typeof 检查当前变量是什么数据类型
    console.log(typeof a)
    //特殊情况
    var a1 = 5/0;
    console.log(typeof e1) //Infinity 无限大. number类型

    2. string

    var str  = '123'
    console.log(typeof str)

    3. boolean

    var b1 = false;
    console.log(typeof b1)

    4. null

    var c1 = null;//空对象. object
    console.log(c1)

    5. undefined

    var d1;
    //表示变量未定义
    console.log(typeof d1)

    二.常用内置属性

    String       --> 相当于Python 字符串
    Array        --> 相当于Python 列表
    Date         --> 相当于Python time

    Math         -->相当于Python random

    所谓内置对象就是ECMAScript提供出来的一些对象,我们知道对象都是有相应的属性和方法

    1.字符串String

    字符串方法

    (1) chartAt() 返回指定索引的位置的字符

    var str = 'alex';
    var charset = str.charAt(1);
    console.log(charset);//l

    (2) concat 返回字符串值,表示两个或多个字符串的拼接

    var str1 = 'al';
    var str2  = 'ex';
    console.log(str1.concat(str2,str2));//alexex

    (3) replace(a,b) 将字符串a替换成字符串b

    var a = '1234567755';
    var newStr = a.replace("4567","****");
    console.log(newStr);//123****755

    (4) indexof() 查找字符的下标,如果找到返回字符串的下标,找不到则返回-1 。跟seach()方法用法一样

    var str = 'alex';
    console.log(str.indexOf('e'));//2
    console.log(str.indexOf('p'));//-1

    (5) slice(start,end) 提取一个字符串的一部分,并返回一新的字符串。左闭右开 分割字符串

    var str = '小马哥';
    console.log(str.slice(1,2));//马

    (6) split('a',1) 以字符串a分割字符串,并返回新的数组。如果第二个参数没写,表示返回整个数组,如果定义了个数,则返回数组的最大长度

    var  str =  '我的天呢,a是嘛,你在说什么呢?a哈哈哈';
    console.log(str.split('a'));//["我的天呢,", "是嘛,你在说什么呢?", "哈哈哈"]

    (7) substr(start,length) 返回一个字符串中从指定位置开始到指定字符数的字符。 

    var  str =  '我的天呢,a是嘛,你在说什么呢?a哈哈哈';
    console.log(str.substr(0,4));//我的天呢

    (8) toLowerCase()转小写

    var str = 'XIAOMAGE';
    console.log(str.toLowerCase());//xiaomage

    (9) toUpperCase()转大写

    var str = 'xiaomage';
    console.log(str.toUpperCase());

    (10) substring(indexStart,indexEnd) 提取字符串中介于两个指定下标之间的字符。返回的子串包括 开始 处的字符,但不包括 结束 处的字符

    • 如果 indexStart 等于 indexEndsubstring 返回一个空字符串。
    • 如果省略 indexEndsubstring 提取字符一直到字符串末尾。
    • 如果任一参数小于 0 或为 NaN,则被当作 0。
    • 如果任一参数大于 stringName.length,则被当作 stringName.length
    • 如果 indexStart 大于 indexEnd,则 substring 的执行效果就像两个参数调换了一样

    (11) trim() 去除字符串两边的空白

    特别:

    //1.将number类型转换成字符串类型
    var num = 132.32522;
    var numStr = num.toString()
    console.log(typeof numStr)

    //四舍五入
    var newNum = num.toFixed(2)
    console.log(newNum)

    2.数组Array

    (1) 数组的创建方式

    • 字面量方式创建(推荐大家使用这种方式,简单粗暴)
    var colors = ['red','color','yellow'];
    • 使用构造函数(后面会讲)的方式创建 使用new关键词对构造函数进行创建对象
    var colors2 = new Array();

    (2) 数组的赋值

    var arr = [];
    //通过下标进行一一赋值
    arr[0] = 123;
    arr[1] = '哈哈哈';
    arr[2] = '嘿嘿嘿'

    (3) 数组的常用方法

    (3.1) 数组的合并 concat()

    var north = ['北京','山东','天津'];
    var south = ['东莞','深圳','上海'];
            
    var newCity = north.concat(south);
    console.log(newCity)

    (3.2) join() 将数组中的元素使用指定的字符串连接起来,它会形成一个新的字符串

    var score = [98,78,76,100,0];
    var str = score.join('|');
    console.log(str);//98|78|76|100|0

    (3.3) 将数组转换成字符串 toString()

    var score = [98,78,76,100,0];
    //toString() 直接转换为字符串  每个元素之间使用逗号隔开
               
    var str = score.toString();
    console.log(str);//98,78,76,100,0

    (3.4) slice(start,end); 返回数组的一段,左闭右开

    var arr = ['张三','李四','王文','赵六'];
    var newArr  = arr.slice(1,3);
    console.log(newArr);//["李四", "王文"]

    (3.5) pop 删除数组的最后一个元素并返回删除的元素

    var arr = ['张三','李四','王文','赵六'];
    var item = arr.pop();
    console.log(arr);//["张三", "李四","王文"]
    console.log(item);//赵六

    (3.6) push() 向数组末尾添加一个元素或多个元素,并返回新的长度

    var arr = ['张三','李四','王文','赵六'];
    var newLength= arr.push('小马哥');//可以添加多个,以逗号隔开
    console.log(newLength);//5
    console.log(arr);//["张三", "李四","王文","赵六","小马哥"]
    
    

    (3.7) reverse() 翻转数组

    var names = ['alex','xiaoma','tanhuang','angle'];
           
    //4.反转数组
    names.reverse();
    console.log(names);

    (3.8) sort对数组排序

    var names = ['alex','xiaoma','tanhuang','abngel'];
    names.sort();
    console.log(names);// ["alex", "angle", "tanhuang", "xiaoma"]

    (3.9) 判断是否为数组:isArray()

     布尔类型值 = Array.isArray(被检测的值) ;

    (3.10) shift() 删除并返回数组的第一个元素

    (3.11) unshift() 向数组的开头添加一个或更多元素,并返回新的长度

    3.object

    三、数据类型转换

    (1).将数值类型转换成字符串类型

    隐式转换

    var n1 = 123;
    var n2 = '123';
    var n3 = n1+n2;
    // 隐式转换
    console.log(typeof n3);

    强制类型转换

    复制代码
    var n1 = 123;
    // 强制类型转换String(),toString() var str1 = String(n1); console.log(typeof str1); var num = 234; console.log(num.toString())
    复制代码

    (2).将字符串类型转换成数值类型

    复制代码
    var  stringNum = '789.123wadjhkd';
    var num2 =  Number(stringNum);
    console.log(num2)
    
    // parseInt()可以解析一个字符串 并且返回一个整数
    console.log(parseInt(stringNum))
    console.log(parseFloat(stringNum));
    复制代码

    (3).任何数据类型都可以转换为boolean类型

    复制代码
    var b1 = '123'; 
    var b2 = 0;
    var b3 = -123
    
    var b4 = Infinity; 
    var b5 = NaN;
    
    var b6; //undefined
    var b7 = null;
    
    // 非0既真
    console.log(Boolean(b7))

    四.运算符

    js中的运算符跟python中的运算符有点类似,但也有不同。所谓运算,在数学上,是一种行为,通过已知量的可能的组合,获得新的量。

    (1)赋值运算符

    以var x = 12,y=5来演示示例|

    (2)算数运算符

    var a = 5,b=2

    (3)比较运算符

    var x = 5;

    (4)特殊情况

    字符串拼接+字符串运算 特殊情况。python中有拼接字符串中更简便的办法,其实在js中也有,大家可以百度引擎搜索es6模板字符串。(扩展)

    复制代码
    var  firstName  = '小';
    var lastName = '马哥';
    var name = '伊拉克';
    var am = '美军';
    // 字符串拼接
    var str = "2003年3月20日,"+name+"战争爆发,以美军为主的联合部队仅用20多天就击溃了萨达姆的军队。这是继十多年前的海湾战争后,"+am+"又一次取得的大规模压倒性军事胜利。"
    var fullStr = str;
    console.log(fullStr)
    
    var fullName = firstName +" "+ lastName;
    console.log(fullName)
    复制代码
    // 不能对字符串进行+运算 只能拼接
    var a1 = '1';
    var a2 = '2';
    console.log(a1+a2) //12
    var b1 = 'one';
    var b2  = 'two';
    
    // NaN. ==== not a number 是number类型
    console.log(typeof(b1*b2))

    5.Date日期对象

    创建日期对象只有构造函数一种方式,使用new关键字

    //创建了一个date对象
    var myDate = new Date();

    //创建日期对象
    var myDate=new Date();
            
    //获取一个月中的某一天
    console.log(myDate.getDate());
    
    //返回本地时间
    console.log(myDate().toLocalString());//2018/5/27 下午10:36:23

    写个函数获取时间如:2019年06月06日 17:47:32

    function getTime() {
        var date_obj= new Date();
        var year=date_obj.getFullYear();
        var month=date_obj.getMonth()+1;
        var day=date_obj.getDate();
        var hour=date_obj.getHours();
        var minute=date_obj.getMinutes();
        var seconds=date_obj.getSeconds();
        var week=date_obj.getDay();
    
    
        return year+"年"+month+"月"+f(day)+"日"+" "+hour+": "+minute+" :"+seconds+" "+num_week(week)
    }
    //Date方法:
    alert(getTime());
    
    function f(num) {
        if (num<10){
             return "0"+num;
        }
        return num;
    }
    function num_week(n) {
        week=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]
        return week[n]
    }

    注意:以上getxxx的方法都是对时间的获取,如果要设置时间,使用setxxx,请参考链接:http://www.runoob.com/jsref/jsref-obj-date.html

    6.Math 内置对象

    常用内置对象

     6.1 Math.ceil() 向上取整,'天花板函数'

    var x = 1.234;
    //天花板函数  表示大于等于 x,并且与它最接近的整数是2
    var a = Math.ceil(x);
    console.log(a);//2

    6.2 Math.floor 向下取整,'地板函数'

    var x = 1.234;
    // 小于等于 x,并且与它最接近的整数 1
    var b = Math.floor(x);
    console.log(b);//1

    6.3 求两个数的最大值和最小值

    //求 两个数的最大值 最小值
    console.log(Math.max(2,5));//5
    console.log(Math.min(2,5));//2

    6.4 随机数 Math.random()

    var ran = Math.random();
    console.log(ran);[0,1)

    //0-100随机数
    var num=Math.random()*100
    console.log(Math.round(num))

    如果让你取100-200之间的随机数,怎么做?

    背过公式:min - max之间的随机数: min+Math.random()*(max-min)

    以上是咱们介绍的JS常用对象的方法,如果想参考更多内容,请参考链接:http://www.runoob.com/jsref/jsref-tutorial.html

  • 相关阅读:
    location.href
    网络载入数据和解析JSON格式数据案例之空气质量监測应用
    概率dp HDU 3853
    poj2031-Building a Space Station(最小生成树,kruskal,prime)
    在JS数组指定位置插入元素
    leetcode
    leetcode笔记:Range Sum Query
    最优解算法的讨论
    NYOJ_77 开灯问题
    C++调用Lua的性能測试
  • 原文地址:https://www.cnblogs.com/xiaozhiqi/p/10974090.html
Copyright © 2011-2022 走看看