js中的数据类型
ECMAScript中有5种基本数据类型:undefined、null、boolean、number、string。还有一种复杂数据类型–object,object本质上是由一组无序的名值对组成的。ES不支持任何创建自定义类型的机制。
type of操作符
- 语法
type of(变量)或type of变量 - 功能
检测变量类型 - 返回值
string、number、Boolean、object、undefined、function
null
注意事项 |
---|
如果定义的变量准备在将来用于保存对象,那么最好将变量初始化为null。 |
undefined值是派生自null值的,所有undefined==null的返回结果为true。 |
NaN
- 概念
非数值(Not a Number)是一个特殊的数值。 - 注意
注意事项 |
---|
任何涉及NaN的操作,都会返回NaN。 |
NaN与任何值都不相等,包括NaN本身。 |
isNaN()
- 语法
isNaN(n)
参数n可以是任何类型 - 功能
检测n是否是“非数值”,返回true或false。 - 注意
isNaN()在接收到一个值以后,会尝试将这个值转换为数值。
数值转换
有3个函数可以把非数值转换为数值:Number()、parseInt()和parseFloat()。其中Number()可以用于任何数据类型,而parseInt()和parseFloat()则专门用于把字符串转换成数值。
说明 |
---|
它会忽略字符串前面的空格,直到找到第一个非空格字符。 |
如果第一个字符不是数字或者负号,它就会返回NaN。 |
这个函数提供第二个参数:转换时使用的基数(进制) |
它能识别出各种整数格式,如果字符串以“0x”开头且后面跟数字字符,就会将其当做一个十六进制整数。如果字符串以“0”开头且后跟数字字符,则会将其当做一个八进制数来解析。 |
说明 |
---|
从第一个字符开始解析每个字符,直至遇见一个无效的浮点数字符为止 |
它始终会忽略前导的零,无法识别其它进制数。 |
toString()与String()
数值、布尔值、对象和字符串值都有toString()方法。但是null、undefined值没有这个方法。
- 语法
str.toString() - 功能
将str转换为字符串 - 返回值
str的一个副本 - 注意
注意事项 |
---|
多数情况下,调用toString()方法不必传递参数。但是,在调用数值的该方法时,可以传递一个参数:输出数值的基数。默认是以十进制格式返回数值的字符串表示。 |
在不知道转换的值是不是null或undefined的情况下,可以使用转型函数String(),这个函数能将任何类型的值转换为字符串。调用规则:如果值有toString()方法,则调用该方法(没有参数)并返回相应的结果。如果值为null,则返回“null”,如果值为undefined,则返回“undefined”。 |
递增和递减
- 递增:
++a与a++都是对a进行递增的操作,区别:
++a先返回递增之后的a的值
a++先返回a的原值,再返回递增之后的值 - 递减
递减同理
三元操作符
- 语法
条件?执行代码1: 执行代码2 - 说明
如果条件成立,执行代码1,否则执行代码2。
逻辑操作符
- 逻辑与
在一个操作数不是布尔值的情况下,逻辑与操作就不一定返回值,此时它遵循以下规则:
规则 |
---|
如果第一个操作数隐式类型转换后为true,则返回第二个操作数 |
如果第一个操作数隐式类型转换后为false,则返回第一个操作数 |
如果有一个操作数是null,则返回null,同时遵循第一条与第二条规则 |
如果有一个操作数是NaN,则返回NaN,同时遵循第一条与第二条规则 |
如果有一个操作数是undefined,则返回undefined,同时遵循第一条与第二条规则 |
- 逻辑或
在一个操作数不是布尔值的情况下,逻辑与操作就不一定返回值,此时它遵循以下规则:
规则 |
---|
如果第一个操作数隐式类型转换后为true,则返回第一个操作数 |
如果第一个操作数隐式类型转换后为false,则返回第二个操作数 |
如果两个操作数都是null,则返回null |
如果两个操作数都是NaN,则返回NaN |
如果两个操作数都是undefined,则返回undefined |
- 逻辑非
无论操作数是什么数据类型,逻辑非都会返回一个布尔值。
prompt()
返回值 |
---|
点击确认,返回输入内容 |
点击取消,返回null |
JS的内置对象
JavaScript中的数组
方法 | 语法 | 功能 | 返回值 |
---|
push() | array.push(new1,new2,…) | 把它的参数按顺序添加到数组的尾部 | 数组的新长度 |
unshift() | array.unshift(new1,new2,…) | 把它的参数按顺序添加到数组的开头 | 数组的新长度 |
pop() | array.pop() | 删除数组的最后一个元素 | 被删除的那个元素 |
shift() | array.shift() | 删除数组的第一个元素 | 被删除的那个元素 |
方法 | 语法 | 功能 | 返回值 |
---|
join() | array.join(separator) | 用于把数组中的所有元素放入一个字符串 | 字符串 |
reverse() | array.reverse() | 用于颠倒数组中元素的顺序 | 数组 |
sort() | array.sort(sortby) | 用于对数组元素进行排序 | 数组 |
说明:sort()方法比较的也是字符串,它可以接收一个比较函数为参数。
方法 | 语法 | 功能 | 返回值 |
---|
concat() | array.concat(array1,array2,…) | 用于连接两个或多个数组 | 数组 |
slice() | array(start,end) | 从已有的数组中返回选定的元素 | 数组 |
说明:
slice()说明 |
---|
start(必须)规定从何处开始选取,如果是负数,那么它固定从数组的尾部开始算起的位置。 |
end(可选)规定从何处结束选取,返回值不包含下表为end的数组项。 |
如果没有指定end,那么切分的数组包含从start到数组结束的所有元素 |
如果slice()方法的参数中有一个负数,则用数组长度加上该数来确定相应的位置 |
语法 | 功能 | 返回值 | 说明 |
---|
array.splice(index,count) | 删除从index出开始的零个或多个元素 | 含有被删除的元素的数组 | count是要删除的项目数量,如果设置为0,则不会删除项目。如果不设置,则删除从index开始的所有值。 |
array.splice(index,0,item1,…) | 在指定位置插入值 | 新数组 | index是起始位置,0是要删除的项数,item…是要插入的项 |
array.splice(index,count,item1,…) | 在指定位置插入值,且同时删除任意数量的项 | 从原始数组中删除的项 | index是起始位置,count是要删除的项数,item…是要插入的项 |
方法 | 语法 | 功能 | 参数 | 返回值 |
---|
indexOf() | array.indexOf(searchvalue,startIndex) | 从数组的开头开始向后查找 | searchvalue(必须)指要查找的项,startIndex(可选)指起点位置的索引 | 查找的项在数组中的位置,没有找到的情况下返回-1。 |
lastIndexOf() | array.lastIndexOf(searchvalue,startIndex) | 从数组的末尾开始向前查找 | searchvalue(必须)指要查找的项,startIndex(可选)指起点位置的索引 | 查找的项在数组中的位置,没有找到的情况下返回-1 |
说明:在比较第一个参数与数组中的每一项时,会使用全等操作符,即要求查找的项必须严格相等。这两个方法是ES5为数组实例新增的,所有支持的浏览器有:IE9+、Firefox、Safari、Opera、Chrome。
JavaScript中的String
方法 | 语法 | 功能 |
---|
charAt() | string.charAt(index) | 返回string中index位置的字符 |
charCodeAt() | string.charAt(index) | 返回string中index位置的字符 |
说明:ES5中可使用“方括号加字符索引”来访问字符串中特定的字符,但是IE7及更早的浏览器会返回undefined。
方法 | 语法 | 功能 | 返回值 | 说明 |
---|
indexOf() | string.ndexOf(“string1”) | 从一个字符串的开头向后搜索给定的子字符串,返回子字符串的位置 | 数值 | 如果没有找到该子字符串,则返回-1 |
lastIndexOf() | string.lastIndexOf(“string1”) | 从一个字符串的末尾向前搜索给定的子字符串,返回子字符串的位置 | 数值 | 如果没有找到该子字符串,则返回-1 |
方法 | 语法 | 功能 | 参数说明 |
---|
slice() | string.slice(start,end) | 截取子字符串 | start(必需)指定子字符串的开始位置。end(可选)表示子字符串到哪里结束,end本身不在截取范围之内,省略时截取至字符串的末尾。当参数为负时,会将传入的负值与字符串的长度相加 |
substring() | string.substring(start,end) | 截取子字符串 | 当参数为负数时,自动将参数转换为0。substring()会将较小的数作为开始位置,较大的数作为结束位置 |
substr() | string.substr(start,len) | 截取子字符串 | start(必需),指定子字符串的开始位置。len(可选),表示截取的字符总数,省略时截取至字符串的末尾。当start为负数时,会将传入的负值与字符串的长度相加。当len为负数时,返回空字符串。 |
方法 | 语法 | 功能 | 返回值 | 说明 |
---|
split() | string.split(separator) | 把一个字符串分割成字符串数组 | 数组 | separator(必需):分隔符 |
replace() | string.replace(regexp/substr,replacement) | 在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串 | string | regexp(必需),规定子字符串或要替换的模式的RegExp对象。replacement(必需),一个字符串值 |
- toUpperCase()与toLowerCase()
方法 | 语法 | 功能 |
---|
toUpperCase() | string.toUpperCase() | 将字符串转换为大写 |
toLowerCase() | string.toLowerCase() | 将字符串转换为小写 |
JavaScript中的Math
方法 | 语法 | 功能 | 返回值 |
---|
min() | Math.min(num1,num2,…) | 求一组数中的最小值 | Number |
max() | Math.man(num1,num2,…) | 求一组数中的最大值 | Number |
cell() | Math.cell(num) | 向上取整,即返回大于num的最小整数 | Number |
floor() | Math.floor(num) | 向下取整,返回num的整数部分 | Number |
round() | Math.round(num) | 将数值四舍五入为最接近的整数 | Number |
abs() | Math.abs(num) | 返回num的绝对值 | Number |
random() | Math.random() | 返回大于等于0小于1的一个随机数 | Number |
补充:求n到m之间的随机整数的公式
random=Math.floor(Math.random()*(m-n+1)+n);
JavaScript中的date对象
- 创建一个日期对象的方法
语法:new Date();
功能:创建一个日期时间对象
返回值:不传参的情况下,返回当前的日期时间对象。
说明:如果想根据特定的日期和时间创建日期对象,必须传入表示该日期的毫秒数或者是一组用逗号隔开的表示年月日时分秒的参数(年月日必写,时分秒可以省略)。 - 获取年月日时分秒及星期的方法
方法 | 描述 |
---|
getFullYear() | 返回4位数的年份 |
getMonth() | 返回日期中的月份,返回值为0-11 |
getDate() | 返回月份中的天数 |
getDay() | 返回星期,返回值为0-6 |
getHours() | 返回小时 |
getMinutes() | 返回分钟 |
getSeconds() | 返回秒 |
getTime() | 返回表示日期的毫秒数 |
方法 | 描述 |
---|
setFullYear(year) | 设置4位数的年份 |
setMonth(mon) | 设置日期中的月份,从0开始,0表示1月 |
setDate() | 设置日期 |
setDay() | 设置星期,从0开始,0表示星期日 |
setHours() | 设置小时 |
setMinutes() | 设置分 |
setSeconds() | 设置秒 |
setTime() | 以毫秒数设置日期,会改变整个日期 |