javascript学习三、数据类型、数据类型转换、运算符

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

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

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

一.基本数据类型

1. number数组

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

2. stringdom

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

3. boolean函数

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

4. nullspa

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

5. undefinedcode

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

 

二.经常使用内置属性

String       --> 至关于Python 字符串
Array        --> 至关于Python 列表
Date         --> 至关于Python timehtm

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

 

3、数据类型转换

(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