该博客所有文章已兼容手机排版
javacript中数据类型可概括为:5基础1引用
5种基本数据类型:
- number
- string
- boolean
- null
- undefined
1种引用类型(object):
- 普通对象 {},
- 数组对象 [],
- 正则对象 /^$/,
- 日期对象 new Date(),
- 数学函数对象 Math,
- 实例对象 等等
- (这个比较特殊)function:函数也是对象,它有自己独特的慨念。
ES6新增
Symbol: 创建唯一值。
简单来说各个类的实例都是对象
number类型中有个有趣好玩特殊的符号:NaN (number类型)
typeof 检测数据类型 typeof NaN => “number”
NaN(Not a Number):不是有一个有效数字。
NaN和谁都不相等
NaN = NaN => false; 自己不等于自己
NaN = 1 => false;
NaN = ‘a’ => false;
所以不能拿NaN来去检测数字
js种有种方法isNaN,它是用来检测是否是无效数字。
无效的=>true, 有效的=>false;
isNaN(’’),在v8底层隐式用的是number();来将其转换。
重点:为什么我们有的时候从服务器后台拿数据到前端渲染时,数据会变成NaN:把其他数据类型转化为number类型的时候,不能转换就是NaN
number类型中的 NaN 一定要搞清楚
对象中的键值对
```javascript
Object
let a = {
a : 10
}
let b = function(){};
let obj = {
0 : 100,
true : 'xxx'
};
obj [a] = 1000;
obj [b] = 2000;
//输出
{
0 : 100,
true : ‘xxx',
[object object] : 1000,
[object object] : 2000
}
这里讲的是对象中的 键值对 中的 属性名 一定是 字符串类型
不可以将 引用类型的数据 作为 对象键值对中的属性名 。
上面这个例子就是a是个对象属于引用类型
因为对象的属性名一定不能是引用类型
默认会把引用类型值转化为字符串处理 [object object] 。
let a={x: 100};
let b={y: 200};
let obj={};
obj[a] = '你好';
//对象中的属性名会默认tostring();
//输出
{x:100}.tostring()
=[object object] =’你好‘
obj[b] = '你不好';
{y:200}.tostring()
=[object object]=’你不好‘。
重点考察:对象的属性名一定不能是引用类型。
数组和对象
考点: 数组和对象有什么区别和关系。
①数组就是对象
②对象中用的最多的就是数组。
③数组中 属性名 是有规律的逐一递增的代表位置的数据的索引。
数组中常用的属性和方法:
-
concat(arrayX)(具体的值/数组对象):连接两个或者多个数组。
(返回值:返回新的数组)
-
join(separator)(分隔器):将数组中每个元素转化为字符串,然后通过传入的分隔符把字符串连接起来。
(返回值:返回一个字符串)
-
push(el,el,el)(一个/多个元素):向数组末尾添加一个/更多元素,直接修改原数组。
(返回值:新的数组长度)
-
pop():删除数组中最后的元素,把数组长度-1,并返回删除元素的值。
-
shift():删除数组中第一个元素,并返回第一个元素的值。
请注意: 原数组上进行修改
-
unshift(el,el,el…):向数组首位添加一个/多个元素。
(返回值:返回原数组新的长度) 请注意: 原数组上进行修改
-
slice(start,end)(下标选取,下标结束选取,左闭右开):向数组截取从start下标开始的元素。
(返回值:返回一个新的数组) 请注意: 该方法并不会修改数组, 而是返回一个子数组。 如果想删除数组中的一段元素, 应该使用方法Array.splice()。
-
splice(index,howmany,el/elx)(下标,删除个数,添加新元素):用于插入、删除或替换数组的元素。
请注意: splice() 方法与slice() 方法的作用是不同的, splice() 方法会直接 对数组进行修改。
-
reverse():颠倒数组中的元素的顺序。
请注意:原数组上进行修改
-
sort(sortby)(sortby必须是函数):对数组的元素进行排序。
请注意:
原数组上进行修改
请注意:
sort()只对字母排序有效,
但是对数字排序效果效果并不理想,
想要实现对数字排序,必须引入函数。
- toString():将数组转化为字符串,并返回结果,元素之间逗号分隔。
(返回值:返回值与没有参数的
join()方法返回的字符串相同)
ES6新增数组方法
flat():数据扁平化操作,更加便捷对数据进行操作。
set():数组去重操作。
字符串中常用属性和方法:
-
charAt(index)(某字符在字符串中的下标):方法可返回指定位置的字符。
-
concat(stringX)(一个/多个字符串):用于连接两个或多个字符串。
请注意: concat() 方法将所有参数 转换成字符串, 按顺序连接成字符串 , 并返回连接后的字符串. 请注意: stringObject 本身并没有被更改, stringObject.concat() 与 Array.concat() 很相似.
-
indexOf(searchvalue,fromindex)(需要检索的字符串值,规定在字符串中开始检索的位置):方法可返回某个指定的字符串值在字符串中首次出现的位置
(返回值:如果要检索的 字符串值没有出现, 则该方法返回 -1) 请注意: indexOf() 方法对大小写敏感!
-
lastIndexOf():作用与indexOf()相同,只是它是从后往前进行查找
-
replace(reg,replacement):用于在字符串中一些字符替换另一些字符,或者替换一个与正则表达式匹配的字符
(返回值:一个新的字符串, 使用replacement替换了reg 的第一次匹配得到的)
-
slice(start end):提取字符串中的某些部分,并以新的字符串返回被提取的部分
请注意: String.slice() 与Array.slice() 相似.
-
split(separator,howmany)(字符串/正则表达式,选择多少个):将一个字符串分割成字符串数组。
请注意: String.split() 执行的操作与 Array.join 执行的操作是相反的.
-
substring(),tolowercase(),toupcase();等等