js是单线程语言,不能同时干两件事
同步、异步的理解 是否阻塞程序的执行,如果是就是同步,否则就是异步
异步有:ajax请求、定时器、图片加载、点击事件
promise
Promise对象是一个构造函数,用来生成Promise实例。它有三个状态,进行中,已成功,已失败,最大的缺点一创建无法取消,接受两个回调函数
Promise构造函数接受一个函数作为参数,该函数的两个参数分别为resolve和reject,它们是两个函数
Promise.prototype.then()接受两个回调函数,Promise.prototype.catch()用来捕获异常
java基础教程第3版源码
统一捕获异常、多个接口请求支持链式执行「promise.all所有的请求都完成再往下执行,参数是一个装有一个或多个promise对象的数组。、promise.race只要有一个完成就往下执行」
指定执行循序,通过.then;第一个执行完return 第二个promise对象
async、await
现原理就是将Generator函数,ES6提供的一种异步编程解决方案,sync函数就是将Generator函数的星号(*)替换成async,将yield替换成await,然后内置了一个功能类似run的执行器。
是一个同步的写法,使用的时候注意 async加在函数的前面、await后面是一个promise的实例
可以把 async 看成将函数返回值使用 Promise.resolve() 包裹了下。
await 只能在 async 函数中使用
上面代码会先打印 finish 然后再打印 object 。因为 await 会等待 sleep 函数 resolve ,所以即使后面是同步代码,也不会先去执行同步代码再来执行异步代码。
关于var、let、const
let和const是var的改良版,能用const就不用let, 能用let就不用var。
用var在函数内部声明,这个变量就属于当前的函数作用域,如果不用var关键字则声明的是一个全局变量。
let和const声明的变量时块级作用域,避免了无意中全局变量污染,更加的灵活安全。另一个好处就是在循环语句中,let关键字为每次循环绑定单独绑定一个变量。
let和const不可以重复定义变量,let和const定义的变量不属于不再是全局变量window的属性或方法
let声明的是变量,const声明的是常量,只读,修改值会报错,const保存的是内存地址,可以给对象或数组添加属性或元素,但是不能重新复写
一、数据类型
初始化未经声明的变量,总是会创建一个全局变量。
undefined:表示“未定义”或不存在,null:表示空值,即此处的值为空
其中 JS 的数字类型是浮点类型的,没有整型。并且浮点类型基于 IEEE 754标准实现,在使用中会遇到某些 Bug。NaN 也属于 number 类型,并且 NaN 不等于自身。
对象(Object)是引用类型,在使用过程中会遇到浅拷贝和深拷贝的问题。
关于赋值
基本数据类型赋值 互不影响 而引用类型赋值后指向的是同一个引用地址 所以修改一个其他的都会变
js内置函数
关于 NAN 即非数值,不是(not)一个(a)数字(number)。
parseInt()、parseFloat()
如果字符串头部有空格,空格会被自动去除。
如果parseInt的参数不是字符串,则会先转为字符串再转换。
字符串转为整数的时候,是一个个字符依次转换,如果遇到不能转为数字的字符,就不再进行下去,返回已经转好的部分。
如果字符串的第一个字符不能转化为数字(后面跟着数字的正负号除外),返回NaN。
如果参数不是字符串,或者字符串的第一个字符不能转化为浮点数,则返回NaN。
string 字符串
由于 HTML 语言的属性值使用双引号,所以很多项目约定 JavaScript 语言的字符串只使用单引号
一、布尔,数字,字符串
截取给定位置的那个字符 charAt 只接受一个参数
字符串的拼接 concat 或者 + 加号操作符
字符串的截取 slice()、substr()、substring()。接收两个参数,并且第二个参数都是可选参数
str.substring 遇到负数不计算,交换下标位置
substring()从提取的字符indexStart可达但不包括 indexEnd
如果indexStart 等于indexEnd,substring()返回一个空字符串。
如果indexEnd省略,则将substring()字符提取到字符串的末尾。
如果任一参数小于0或是NaN,它被视为为0。
如果任何一个参数都大于stringName.length,则被视为是stringName.length。
如果indexStart大于indexEnd,那么效果substring()就好像这两个论点被交换了一样; 例如,str.substring(1, 0) == str.substring(0, 1)
str.substr <不推荐使用,即将废弃>
substr()会从start获取长度为length字符(如果截取到字符串的末尾,则会停止截取)。
如果start是正的并且大于或等于字符串的长度,则substr()返回一个空字符串。
若start为负数,则将该值加上字符串长度后再进行计算(如果加上字符串的长度后还是负数,则从0开始截取)。
如果length为0或为负数,substr()返回一个空字符串。如果length省略,则将substr()字符提取到字符串的末尾。
str.slice 遇到负数会计算
若beginIndex为负数,则将该值加上字符串长度后再进行计算(如果加上字符串的长度后还是负数,则从0开始截取)。
如果beginIndex大于或等于字符串的长度,则slice()返回一个空字符串。
如果endIndex省略,则将slice()字符提取到字符串的末尾。如果为负,它被视为strLength + endIndex其中strLength是字符串的长度。
如何确定一个值到底是什么类型
JavaScript 有三种方法
- typeof运算符
- instanceof运算符
- Object.prototype.toString方法
Typeof
typeof 对于基本类型,除了 null 都可以显示正确的类型
typeof 对于对象,除了函数都会显示 object
对于 null 来说,虽然它是基本类型,但是会显示 object
null的类型是object,这是由于历史原因造成的。1995年的 JavaScript 语言第一版,只设计了五种数据类型(对象、整数、浮点数、字符串和布尔值),没考虑null,只把它当作object的一种特殊值。后来null独立出来,作为一种单独的数据类型,为了兼容以前的代码,typeof null返回object就没法改变了。
转换数字的时候会莫名其妙的变为NAN
如果第一个字符不是数字或者负号使用parseInt就会返回NAN
字符串的查找 indexOf match
统计一个字符串出现最多的字母 「考察数组去重、数据整合」
字符串的替换 replace()
字符串转数组的方法 split()
二、URL编码方法
Math对象获取数组最大值最小值
三、 Math 对象
获取数组中最大值和最小值 避免过多的使用循环和在if语句中确定数值。
random()方法
值 = Math.floor ( Math.round() * 可能值的总数 + 第一个可能的值 )
运算
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/25480.html