数据类型
- Number js不区分整数和浮点数,NaN表示Not a number当无法计算时会出现如0/0,Infinity表示无限大,当超出js最大计算范围时会出现如2/0
- 字符串’abc’或者”abc”
- 布尔类型 只有true和false
- null和undefined 一般需要使用前者,只有当用于判断传参是否为空时才会用到后者,null、undefined、”都是false
- 数组 [1,’a’,null,undefined,false] 数组元素可以是任意类型
- 对象 由{}括起来的一组键值对如 var obj = {username:’123’,password:’12345678’}
- 可以使用typeof关键字来判断类型
严格模式
- 使用’use strict’;开头在支持严格模式的环境下如果不声明变量之间使用的话,会报错,比如在RN中开启严格模式然后使用未声明的变量回报ReferenceError
字符串
- 多行字符串使用´´包裹,作用是可以少些该字符串中的\n换行,不好用第二行开始每行前会出现空格
- 模板字符串ES6新增使用´´包裹,比如console.log(´My name is ${name}´)
- 字符串是不可变的如下,会报个错说a是readonly的
var a = '1234';
a[0] = '2';
console.log(a);
- toUpperCase、toLowCase、subString都会返回一个新的字符串indexOf会得到参数字符串出现的第一个位置
数组
- map方法可以传入一个方法,然后会返回一个新数组
- reduce也可以传入一个方法并且该方法必须接受两个参数,得到的结果是fun(fun(x1,x2),x3)
- 如果对一个数组的length赋值会导致数组的长度变化,删除多余项或者添加N项undefined
- 对Array进行索引赋值时,索引超过了范围,同样会引起数组长度变化
- slice方法(截取数组) arr.slice(0,3)返回一个截取了原数组第1到3个元素的数组,arr.slice()可以直接创建一个arr的复制,arr.slice(3)会返回一个截取了原数组第4个到最后个元素的数组
- push、pop push在数组尾部添加元素,pop则从尾部删除数组
- shift、unShift shift会删除数组第一个元素,unShift会在第一个元素前添加一个元素
- sort对数组元素进行排序
- reverse将数组反序不会返回新数组
- splice删除数组指定位置的元素,并在该位置添加指定元素
arr.splice(2,3)
arr.splice(2,3,'a','b')
arr.splice(2,0,'a')
- concat拼接数组,并返回一个新数组
- join把当前数组的每个元素都用指定字符连接起来并返回
var arr = [1,2,3,4];
var str = arr.join('-')
- 数组、Map、Set都拥有forEach方法用于遍历
对象
- 当一个对象的属性名不是一个变量名比如包含了-等对象中的键需要加上”,取值的时候也不能通过.获取,要通过arr[‘xxx’]获取
let a = {'my-name','hfw'};
var name = a['my-name'];
- 判断一个对象是否含有某个属性使用in关键字如:’name’ in obj
- 将一个对象转化为字符串json字符串JSON.stringify(arr)
- 变量对象属性使用in关键字,Array也是对象也能这么做
var obj = {
name: 'hfw',
age: 22,
city: 'hangzhou'
};
for (var key in obj) {
console.log(key);
}
方法
- arguments属性,只在方法内部有效可以获取当前方法的参数,类似一个数组
- JS会自动把方法中的变量声明提到代码首部,因此可以使用定义在后面的属性,但是其值为undefined
- var关键字的作用域只区分全局和方法内部两种,所以ES6新增了let作为块级作用域
- apply方法可以执行一个方法(传入一个this,和参数)
常量
- 在ES6前是无法声明常量的,ES6中引入关键字const,其也拥有块级作用域
- 如果想修改某个系统内置方法可以直接修改
杂项
var x = 1,y = 2;
[x,y] = [y,x]
解构赋值
let {name,age} = person;
- 从数组中取出对应位置的值,对数组解构赋值需要使用[]括起来
let [x,y,z] = ['1','2','3'];
- 解构赋值中为变量起别名,给style属性赋值为textStyle属性
let {name,style:textStyle} = props;
let {name,age=20} = props;
ReactNative遇到的坑
- IOS上FlatList拉到底部时onEndReached会调用多次,原因是IOS的列表拉到底部会反弹导致再次调用onEndReached,解决办法是
//FlatList属性
onMomentumScrollBegin={() => { this.onEndReachedCalledDuringMomentum = false; }}
//onEndReached回调
if (!this.onEndReachedCalledDuringMomentum) {
this.props.store.loadMore();
this.onEndReachedCalledDuringMomentum = true;
}
- 由于JS会在每行后面自动加上;所以在写如下语句时要注意
return
<View />
- JS字符串转数字,不仅可以使用parseInt(),还能使用 +x、x-0等