JavaScript简介
JS是一个轻量级的,解释型的讲函数视为一级公民的程序设计语言。他是一种基于原型的多范式动态脚本语言,支持面向对象,命令式编程和函数式编程。
属性的声明
我们直接上一张表来看下
语法 | 含义 | 定义范围 |
---|---|---|
var | 变量 | 全局/类/函数 |
let | 局部变量 | 函数 |
const | 常量 | 全局/类/函数 |
static | 静态函数 | 全局/类/函数 |
数据结构和类型
类型 | 含义 |
---|---|
Boolean | 布尔值,true/false |
null | 空类型 |
undefined | 没有定义的类型 |
Number | 数字类型 |
String | 字符串 |
Symbol | 值类型(不可变的,可以作为key) |
Object | 这个就不用说了吧 |
流程控制
类型 | 含义 |
---|---|
if,else | 条件判断 |
switch | 循环 |
for | 循环 |
while | 条件循环 |
break | 跳出整个循环 |
continue | 跳出当层循环 |
return | 跳出当前函数 |
以下值在JS中是会识别为false
false
undefined
null
0
NaN
空字符串 ("")
注释
写法 | 含义 |
---|---|
// | 单行注释 |
/* */ | 多行注释 |
{/* */} | 视图注释 |
函数
函数的定义,由
function
关键字声明,例如function 函数名()
在()添加参数,参数不需要声明类型。当在类中定义的时候,不需要funciton关键字
箭头函数(Arrow functions)
对于刚开始没有接触过js语法的萌新来说下面这段代码有点蒙蔽。
//调用本类的loadData()方法
onPress={() => this.loadData()}
//还可以使用下面的写法
onPress={() => {
//具体的实现
...
}
}
其实这种写法有种像android中的lambda表达式。
() => {}
中()
代表需要传入的参数,=>
代表指向的意思,{}
代表内部具体的代码实现。如果指向的是一行代码可以省去外面的{}
括号。
Promise
在ES6中原生提供了 Promise 对象。Promise其实就是一个对象,用来传递异步操作的消息。Promise有三种状态:Pending(事件执行中)、Resolved(事件完成)和 Rejected(事件失败)。
优点:有了 Promise 对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。此外,Promise 对象提供统一的接口,使得控制异步操作更加容易。
缺点
- 无法取消 Promise,一旦新建它就会立即执行,无法中途取消
- 如果不设置回调函数,Promise 内部抛出的错误,不会反应到外部。
- 当处于 Pending 状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)
可能这些概念性的东西大家听的有点蒙蔽,那咱们就直接上代码吧。先来一个简单的使用例子:
var promise = new Promise((resolve, reject) =>{
//这里是异步处理方法,最终得到data结果(Promise状态)
...
//然后根据data的status属性决定处理结果是否正确。
if(data.status == true){
resolve(data); //Resolved状态
}else{
reject(error); //Rejected状态
}
});
//使用
promise.then((data)=>{
//这里处理resolve回调方法
}).catch((error)=>{
//这里处理reject回调方法
});
由于promise执行then/catch方法时会再返回一个Promise对象,所以是还可以再次执行then或者catch方法,所以Promise还可以写成方法链的形式:
const promise = Promise.resolve(1)
promise
.then((value) => {
console.log(value)
})
.then((value) => {
console.log(value)
})
.catch((error) => {
console.log(error)
})
如果上个then函数想给下个函数返回值让其使用也是可以的,继续上代码。
const promise = Promise.resolve(1)
promise
.then((value) => {
return value + 1
})
.then((value) => {
return value * 2
})
.then((value) => {
return console.log(value)
})
.catch((error) => {
console.log(error)
})
网友评论