JavaScript基础

本文介绍了JavaScript中的基本数据类型,包括Number、String、Boolean等,并详细解释了数组与对象的操作方法,如map、reduce、slice等。同时,还探讨了ES6新增特性,如模板字符串、解构赋值等。
摘要由CSDN通过智能技术生成
数据类型
  1. Number js不区分整数和浮点数,NaN表示Not a number当无法计算时会出现如0/0,Infinity表示无限大,当超出js最大计算范围时会出现如2/0
  2. 字符串’abc’或者”abc”
  3. 布尔类型 只有true和false
  4. null和undefined 一般需要使用前者,只有当用于判断传参是否为空时才会用到后者,null、undefined、”都是false
  5. 数组 [1,’a’,null,undefined,false] 数组元素可以是任意类型
  6. 对象 由{}括起来的一组键值对如 var obj = {username:’123’,password:’12345678’}
  7. 可以使用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') //删除第三个元素到第五个元素,并使第三个元素为a,第四个为b
    arr.splice(2,0,'a') //不删除元素,只把a添加到第三个元素
  • concat拼接数组,并返回一个新数组
  • join把当前数组的每个元素都用指定字符连接起来并返回
    var arr = [1,2,3,4];
    var str = arr.join('-') //1-2-3-4 
  • 数组、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                 //自动加了;直接返回undefined了下面语句没执行到
        <View />
  • JS字符串转数字,不仅可以使用parseInt(),还能使用 +x、x-0等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值