当前位置:网站首页 > Java基础 > 正文

java基础教程第3版源码



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 有三种方法

  1. typeof运算符
  2. instanceof运算符
  3. 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() * 可能值的总数 + 第一个可能的值 )

 

运算

版权声明


相关文章:

  • 传智播客java基础idea2024-10-21 19:50:04
  • java基础2242024-10-21 19:50:04
  • java基础算法 面试2024-10-21 19:50:04
  • 我的世界java版基础模组2024-10-21 19:50:04
  • java基础线程和进程理论2024-10-21 19:50:04
  • java面试基础spring2024-10-21 19:50:04
  • 自学java 基础技巧2024-10-21 19:50:04
  • java如何找到基础包2024-10-21 19:50:04
  • java虚拟机基础教程2024-10-21 19:50:04
  • java基础入门的考试试题2024-10-21 19:50:04