JavaScript的一些注意事项!

JavaScript的一些注意事项!

  • 1. JavaScript 数据类型
  • 2. JavaScript 事件
  • 3. JavaScript 字符串
  • 4. JavaScript 正则表达式
  • 5. JavsScript this 关键字
  • 6. JavaScript let 和 const
  • 7. JavaScript 异步编程
  • 8. JavaScript Promise
  • 9. JavaScript 代码规范
  • 10. JavaScript 函数定义
  • 11. JavaScript prototype
  • 12. JavaScript Number对象
  • 13. JavaScript String
  • 14. JavaScript Date
  • 15. JavaScript Array
    • 15.1 改变原数组的方法
      • 15.1.1 push
      • 15.1.2 unshift
      • 15.1.3 pop
      • 15.1.4 shift
      • 15.1.5 sort
      • 15.1.6 splice
      • 15.1.7 reverse
    • 15.2 不改变原数组的方法
      • 15.2.1 concat
      • 15.2.2 join
      • 15.2.3 reduce
      • 15.2.4 map
      • 15.2.5 forEach
      • 15.2.6 filter
      • 15.2.7 slice
      • 15.2.8 findIndex
  • 16. JavaScript Boolean
  • 17. JavaScript Math
  • 18. JavaScript RegExp
  • 19. JavaScript call()和apply()

1. JavaScript 数据类型

笔记

  • 值类型(基本类型): 字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、Symbol
  • 引用数据类型(对象类型): 对象(Object)、数组(Array)、函数(Function),还有两个特殊的对象:正则(RegExp)和日期(Date)
    Javascript Data Types
  • 请注意:
  • NaN 的数据类型是 number
  • 数组(Array)的数据类型是 object
  • 日期(Date)的数据类型为 object
  • 未定义变量的数据类型为 undefined
  • 如果对象是 JavaScript Array 或 JavaScript Date ,我们就无法通过 typeof 来判断他们的类型,因为都是 返回 object。

2. JavaScript 事件

笔记

  • 下面是一些常见的HTML事件的列表:
事件描述
onchangeHTML元素改变
onclick用户点击HTML元素
onmouseover鼠标指针移动到指定的元素上时发生
onmouseout用户从一个HTML元素上移开鼠标时发生
onkeydown用户按下键盘按键
onload浏览器已完成页面的加载

3. JavaScript 字符串

笔记

  • 在 JavaScript 中,字符串写在 单引号双引号 中。
    因为这样,以下实例 JavaScript 无法解析:
"We are the so-called "Vikings" from the north."
  • 字符串 "We are the so-called " 被截断。
  • 可以使用反斜杠 () 来转义 “Vikings” 字符串中的双引号,如下:
 "We are the so-called \"Vikings\" from the north."
  • 反斜杠是一个转义字符。 转义字符将特殊字符转换为字符串字符:
  • 转义字符 () 可以用于转义撇号,换行,引号,等其他特殊字符。
  • 下表中列举了在字符串中可以使用转义字符转义的特殊字符:
代码输出
\’单引号
\"双引号
\\反斜杠
\n换行
\r回车
\ttab(制表符)
\b退格符
\f换页符
  • 字符串属性
属性描述
constructor返回创建字符串属性的函数
length返回字符串的长度
prototype允许您向对象添加属性和方法
  • 字符串方法
方法描述
charAt()返回指定索引位置的字符
charCodeAt()返回指定索引位置字符的Unicode值
concat()连接两个或多个字符串,返回连接后的字符串
fromCharCode()将Unicode转换为字符串
indexOf()返回字符串中检索指定字符第一次出现的位置
lastIndexOf()返回字符串中检索指定字符最后一次出现的位置
localeCompare用本地特定的顺序来比较两个字符串
match()找到一个或多个正则表达式的匹配
replace()替换与正则表达式匹配的子串
search()检索与正则表达式相匹配的值
slice()提取字符串的片断,并在新的字符串中返回被提取的部分
split()把字符串分割为子字符串数组
substr()从起始索引号提取字符串中指定数目的字符
substring()提取字符串中两个指定的索引号之间的字符
toLocaleLowerCase()根据主机的语言环境把字符串转换为小写,只有几种语言(如土耳其语)具有地方特有的大小写映射
toLocaleUpperCase()根据主机的语言环境把字符串转换为大写,只有几种语言(如土耳其语)具有地方特有的大小写映射
toLowerCase()把字符串转换为小写
toString()返回字符串对象值
toUpperCase()把字符串转换为大写
trim()移除字符串首尾空白
valueOf()返回某个字符串对象的原始值

4. JavaScript 正则表达式

笔记

  • 语法:
    /正则表达式主体/修饰符
  • 实例:
var patt = /runoob/i
  • 实例解析:
    /runoob/i 是一个正则表达式。
    runoob是一个正则表达式主体(用于检索)
    i 是一个修饰符(搜索不区分大小写)
  • 正则表达式修饰符
    修饰符可以在全局搜索中不区分大小写:
修饰符描述
i执行对大小写不敏感的匹配
g执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)
m执行多行匹配
  • 正则表达式模式
    方括号用于查找某个范围内的字符:
表达式描述
[abc]查找方括号之间的任何字符
[0-9]查找任何从0至9的数字
[x|y]查找任何以|分隔的选项
  • 元字符是拥有特殊含义的字符:
元字符描述
\d查找数字
\s查找空白字符
\b匹配单词边界
\uxxxx查找以十六进制数xxxx规定的Unicode字符
  • 量词
量词描述
n+匹配任何包含至少一个n的字符串
n*匹配任何包含零个或多个n的字符串
n?匹配任何包含零个或一个n的字符串

5. JavsScript this 关键字

笔记

  • 面向对象语言中 this 表示当前对象的一个引用。
    但在 JavaScript 中 this 不是固定不变的,它会随着执行环境的改变而改变。
    • 方法 中,this 表示该方法所属的对象。
    • 如果 单独使用 ,this 表示全局对象。
    • 在函数中,this 表示全局对象。
    • 在函数中,在严格模式下,this 是未定义的(undefined)。
    • 事件 中,this 表示接收事件的元素。
    • 类似 call() 和 apply() 方法可以将 this 引用到任何对象。

6. JavaScript let 和 const

笔记

  • var关键字定义的变量可以 先使用后声明
  • let关键字定义的变量需要 先声明再使用
  • const关键字定义的常量,声明时 必须进行初始化,且 初始化后不可再修改

7. JavaScript 异步编程

笔记
异步的概念

  • 在我们学习的传统单线程编程中,程序的运行是同步的(同步不意味着所有步骤同时运行,而是指步骤在一个控制流序列中按顺序执行)。而异步的概念则是不保证同步的概念,也就是说,一个异步过程的执行将不再与原有的序列有顺序关系。
  • 简单来理解就是:同步按你的代码顺序执行,异步不按照代码顺序执行,异步的执行效率更高。
  • 以上是关于异步的概念的解释,接下来我们通俗地解释一下异步:异步就是从主线程发射一个子线程来完成任务。
  • 回调函数
  • 回调函数就是一个函数,它是在我们启动一个异步任务的时候就告诉它:等你完成了这个任务之后要干什么。这样一来主线程几乎不用关心异步任务的状态了,他自己会善始善终。
  • 异步AJAX
  • 异步回调广泛应用于 AJAX 编程。有关于 AJAX 详细请参见:AJAX
  • XMLHttpRequest 常常用于请求来自远程服务器上的 XML 或 JSON 数据。一个标准的 XMLHttpRequest 对象往往包含多个回调:
var xhr = new XMLHttpRequest();
 
xhr.onload = function () {
    // 输出接收到的文字数据
    document.getElementById("demo").innerHTML=xhr.responseText;
}
 
xhr.onerror = function () {
    document.getElementById("demo").innerHTML="请求出错";
}
 
// 发送异步 GET 请求
xhr.open("GET", "https://www.runoob.com/try/ajax/ajax_info.txt", true);
xhr.send();
  • XMLHttpRequest 的 onload 和 onerror 属性都是函数,分别在它请求成功和请求失败时被调用。如果你使用完整的 jQuery 库,也可以更加优雅的使用异步 AJAX:
$.get("https://www.runoob.com/try/ajax/demo_test.php",function(data,status){
    alert("数据: " + data + "\n状态: " + status);
});

8. JavaScript Promise

笔记

  • Promise 构造函数是 JavaScript 中用于创建 Promise 对象的内置构造函数。
  • Promise 构造函数接受一个函数作为参数,该函数是同步的并且会被立即执行,所以我们称之为起始函数。起始函数包含两个参数 resolve 和 reject,分别表示 Promise 成功和失败的状态。
  • 起始函数执行成功时,它应该调用 resolve 函数并传递成功的结果。当起始函数执行失败时,它应该调用 reject 函数并传递失败的原因。
  • Promise 构造函数返回一个 Promise 对象,该对象具有以下几个方法:
    • then:用于处理 Promise 成功状态的回调函数。
    • catch:用于处理 Promise 失败状态的回调函数。
    • finally:无论 Promise 是成功还是失败,都会执行的回调函数。
  • 下面是一个使用 Promise 构造函数创建 Promise 对象的例子,当 Promise 被构造时,起始函数会被同步执行:
const promise = new Promise((resolve, reject) => {
  // 异步操作
  setTimeout(() => {
    if (Math.random() < 0.5) {
      resolve('success');
    } else {
      reject('error');
    }
  }, 1000);
});
 
promise.then(result => {
  console.log(result);
}).catch(error => {
  console.log(error);
});
  • resolve() 中可以 放置一个参数 用于向下一个 then 传递一个值,then 中的函数也可以返回一个值传递给 then。
  • reject() 参数中一般会传递一个异常给之后的 catch 函数用于处理异常。

9. JavaScript 代码规范

笔记

  • 变量名
    变量名推荐使用驼峰法来命名(camelCase
  • 空格与运算符
    通常运算符 ( = + - * / ) 前后需要添加空格
  • 代码缩进
    通常使用 4 个空格符号来缩进代码块
  • 语句规则
    简单语句的通用规则:
    一条语句通常以分号作为结束符。
    复杂语句的通用规则:
    将左花括号放在第一行的结尾。
    左花括号前添加一空格。
    将右花括号独立放在一行。
    以分号结束一个复杂的声明。
  • 对象规则
    对象定义的规则:
    将左花括号与类名放在同一行。
    冒号与属性值间有个空格。
    字符串使用双引号,数字不需要。
    最后一个属性-值对后面不要添加逗号。
    将右花括号独立放在一行,并以分号作为结束符号。

命名规则

  • 一般很多代码语言的命名规则都是类似的,例如:
    变量和函数为小驼峰法标识, 即除第一个单词之外,其他单词首字母大写( lowerCamelCase
    全局变量为大写 (UPPERCASE )
    常量 (如 PI) 为大写 (UPPERCASE )
  • HTML 和 CSS 的横杠(-)字符:
    HTML5 属性可以以 data- (如:data-quantity, data-price) 作为前缀。
    CSS 使用 - 来连接属性名 (font-size)。
  • 通常在 JavaScript 中被认为是减法,所以不允许使用。
  • 下划线:
    很多程序员比较喜欢使用下划线(如:date_of_birth), 特别是在 SQL 数据库中。
    PHP 语言通常都使用下划线。
  • 帕斯卡拼写法(PascalCase):
    帕斯卡拼写法(PascalCase) 在 C 语言中语言较多。
  • 驼峰法
    JavaScript 中通常推荐使用驼峰法,jQuery 及其他 JavaScript 库都使用驼峰法。
    变量名不要以 $ 作为开始标记,会与很多 JavaScript 库冲突。

文件扩展名
HTML 文件后缀可以是 .html (或 .htm)。
CSS 文件后缀是 .css
JavaScript 文件后缀是 .js

使用小写文件名
大多 Web 服务器 (Apache, Unix) 对大小写敏感: london.jpg 不能通过 London.jpg 访问。
其他 Web 服务器 (Microsoft, IIS) 对大小写不敏感: london.jpg 可以通过 London.jpg 或 london.jpg 访问。
你必须保持统一的风格,我们建议统一使用 小写的文件名

10. JavaScript 函数定义

笔记

函数提升(Hoisting)
提升(Hoisting)是 JavaScript 默认将当前作用域提升到前面去的行为。
提升(Hoisting)应用在变量的声明与函数的声明。
因此,函数可以在声明之前调用:

myFunction(5);

function myFunction(y) {
    return y * y;
}

自调用函数
函数表达式可以 “自调用”。
自调用表达式会自动调用。
如果表达式后面紧跟 () ,则会自动调用。
不能自调用声明的函数。
通过添加括号,来说明它是一个函数表达式:

(function () {
    var x = "Hello!!";      // 我将调用自己
})();

箭头函数
ES6 新增了箭头函数。
箭头函数表达式的语法比普通函数表达式更简洁。

(参数1, 参数2,, 参数N) => { 函数声明 }

(参数1, 参数2,, 参数N) => 表达式(单一)
// 相当于:(参数1, 参数2, …, 参数N) =>{ return 表达式; }

当只有一个参数时,圆括号是可选的:

(单一参数) => {函数声明}
单一参数 => {函数声明}

没有参数的函数应该写成一对圆括号:

() => {函数声明}
  • 有的箭头函数都没有自己的 this。 不适合定义一个 对象的方法
  • 当我们使用箭头函数的时候,箭头函数会默认帮我们绑定外层 this 的值,所以在箭头函数中 this 的值和外层的 this 是一样的
  • 箭头函数是不能提升的,所以需要在使用之前定义。

11. JavaScript prototype

笔记
在 JavaScript 中,原型(prototype)是一个非常重要的概念,它为对象提供了继承和共享属性的机制。每个 JavaScript 对象都有一个与之关联的原型对象,通过原型对象,可以实现属性和方法的共享,从而减少内存占用。
所有的 JavaScript 对象都会从一个 prototype(原型对象)中继承属性和方法。

  • 原型是一个对象,它是其他对象的模板或蓝图。
  • 当一个对象试图访问一个属性或方法时,如果在该对象自身没有找到,JavaScript 会沿着原型链向上查找,直到找到对应的属性或方法,或者达到原型链的顶端 null 为止

对象的__proto__属性
每个 JavaScript 对象(除了 null)都自动拥有一个隐藏的属性 __proto__,它指向该对象的原型对象。

原型链
在 JavaScript 中,对象通过原型链(prototype chain)来实现继承。当一个对象尝试访问一个属性或方法时,JavaScript 会首先检查该对象自身是否有这个属性或方法。如果没有,它会沿着原型链向上查找。

let obj = {};
console.log(obj.toString()); // 输出: [object Object]
// 这个 `toString` 方法实际上是从 `Object.prototype` 继承过来的

在上面的例子中,obj 对象没有定义 toString 方法,因此 JavaScript 沿着原型链查找,最终在 Object.prototype 中找到该方法。

prototype继承

  • 所有的 JavaScript 对象都会从一个 prototype(原型对象)中继承属性和方法:
    Date 对象从 Date.prototype 继承。
    Array 对象从 Array.prototype 继承。
    Person 对象从 Person.prototype 继承。
  • 所有 JavaScript 中的对象都是位于原型链顶端的 Object 的实例。
  • JavaScript 对象有一个指向一个原型对象的链。当试图访问一个对象的属性时,它不仅仅在该对象上搜寻,还会搜寻该对象的原型,以及该对象的原型的原型,依次层层向上搜索,直到找到一个名字匹配的属性或到达原型链的末尾。
  • Date 对象, Array 对象, 以及 Person 对象从 Object.prototype 继承。

添加属性和方法
有的时候我们想要在所有已经存在的对象添加新的属性或方法。
另外,有时候我们想要在对象的构造函数中添加属性或方法。
使用 prototype 属性就可以给对象的构造函数添加新的属性:

function Person(first, last, age, eyecolor) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eyecolor;
}
 
Person.prototype.nationality = "English";

当然我们也可以使用 prototype 属性就可以给对象的构造函数添加新的方法:

function Person(first, last, age, eyecolor) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eyecolor;
}
 
Person.prototype.name = function() {
  return this.firstName + " " + this.lastName;
};

12. JavaScript Number对象

笔记

无穷大(Infinity)
当数字运算结果超过了JavaScript所能表示的数字上限(溢出),结果为一个特殊的无穷大(infinity)值,在JavaScript中以Infinity表示。同样地,当负数的值超过了JavaScript所能表示的负数范围,结果为负无穷大,在JavaScript中以-Infinity表示。无穷大值的行为特性和我们所期望的是一致的:基于它们的加、减、乘和除运算结果还是无穷大(当然还保留它们的正负号)。

NaN - 非数字值

  • NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。可以把 Number 对象设置为该值,来指示其不是数字值。
  • 你可以使用 isNaN() 全局函数来判断一个值是否是 NaN 值。

Number 属性

属性描述
Number.MAX_VALUE最大值
Number.MIN_VALUE最小值
Number.NAN非数字
Number.NEGATIVE_INFINITY负无穷,在溢出时返回
Number.POSITIVE_INFINITY正无穷,在溢出时返回
Number.EPSILON表示1和比最接近1且大于1的最小Number之间的差别
Number.MIN_SAFE_INTEGER最小安全整数
Number.MAX_SAFE_INTEGER最大安全整数

数字方法

方法描述
Number.parseFloat()将字符串转换成浮点数,和全局方法parseFloat()作用一致
Number.parseInt()将字符串转换成整型数字,和全局方法parseInt()作用一致
Number.isFinite()判断传递的参数是否为有限数字
Number.isInteger()判断传递的参数是否为整数
Number.isNaN()判断传递的参数是否为isNaN()
Number.isSafeInteger()判断传递的参数是否为安全整数

数字类型原型上的一些方法

方法描述
toExponential()返回一个数字的指数形式的字符串,如:1.23e+2
toFixed()返回指定小数位数的表示形式
toPrecision()返回一个指定精度的数字

13. JavaScript String

笔记

字符串属性和方法
属性:

  • length
  • prototype
  • constructor

方法:

  • charAt()
  • charCodeAt()
  • concat()
  • fromCharCode()
  • indexOf()
  • lastIndexOf()
  • match()
  • replace()
  • search()
  • slice()
  • split()
  • substr()
  • substring()
  • toLowerCase()
  • toUpperCase()
  • valueOf()

14. JavaScript Date

笔记
日期对象用于处理日期和时间。

Date对象

  • Date 对象用于处理日期与时间。
  • 创建 Date 对象: new Date()
  • 以下四种方法同样可以创建 Date 对象:
var d = new Date();
var d = new Date(milliseconds); // 参数为毫秒
var d = new Date(dateString);
var d = new Date(year, month, day, hours, minutes, seconds, milliseconds);

  • milliseconds 参数是一个 Unix 时间戳(Unix Time Stamp),它是一个整数值,表示自 1970 年 1 月 1 日 00:00:00 UTC(the Unix epoch)以来的毫秒数。
  • dateString 参数表示日期的字符串值。
  • year, month, day, hours, minutes, seconds, milliseconds 分别表示年、月、日、时、分、秒、毫秒。
  • Date对象属性
属性描述
constructor返回对创建此对象的Date函数的引用
prototype使您有能力向对象添加属性和方法
  • Date对象方法
方法描述
getDate()从 Date 对象返回一个月中的某一天 (1 ~ 31)
getDay()从 Date 对象返回一周中的某一天 (0 ~ 6)
getFullYear()从 Date 对象以四位数字返回年份
getHours()返回 Date 对象的小时 (0 ~ 23)
getMilliseconds()返回 Date 对象的毫秒(0 ~ 999)
getMinutes()返回 Date 对象的分钟 (0 ~ 59)
getMonth()从 Date 对象返回月份 (0 ~ 11)
getSeconds()返回 Date 对象的秒数 (0 ~ 59)
getTime()返回 1970 年 1 月 1 日至今的毫秒数
getTimezoneOffset()返回本地时间与格林威治标准时间 (GMT) 的分钟差
getUTCDate()根据世界时从 Date 对象返回月中的一天 (1 ~ 31)
getUTCDay()根据世界时从 Date 对象返回周中的一天 (0 ~ 6)
getUTCFullYear()根据世界时从 Date 对象返回四位数的年份
getUTCHours()根据世界时返回 Date 对象的小时 (0 ~ 23)
getUTCMilliseconds()根据世界时返回 Date 对象的毫秒(0 ~ 999)
getUTCMinutes()根据世界时返回 Date 对象的分钟 (0 ~ 59)
getUTCMonth()根据世界时从 Date 对象返回月份 (0 ~ 11)
getUTCSeconds()根据世界时返回 Date 对象的秒钟 (0 ~ 59)
getYear()已废弃。 请使用 getFullYear() 方法代替
parse()返回1970年1月1日午夜到指定日期(字符串)的毫秒数
setDate()设置 Date 对象中月的某一天 (1 ~ 31)
setFullYear()设置 Date 对象中的年份(四位数字)
setHours()设置 Date 对象中的小时 (0 ~ 23)
setMiliseconds()设置 Date 对象中的毫秒 (0 ~ 999)
setMinutes()设置 Date 对象中的分钟 (0 ~ 59)
setMonth()设置 Date 对象中月份 (0 ~ 11)
setSeconds()设置 Date 对象中的秒钟 (0 ~ 59)
setTime()setTime() 方法以毫秒设置 Date 对象
setUTCDate()根据世界时设置 Date 对象中月份的一天 (1 ~ 31)
setUTCFullYear()根据世界时设置 Date 对象中的年份(四位数字)
setUTCHours()根据世界时设置 Date 对象中的小时 (0 ~ 23)
setUTCMilliseconds()根据世界时设置 Date 对象中的毫秒 (0 ~ 999)
setUTCMinutes()根据世界时设置 Date 对象中的分钟 (0 ~ 59)
setUTCMonth()根据世界时设置 Date 对象中的月份 (0 ~ 11)
setUTCSeconds()setUTCSeconds() 方法用于根据世界时 (UTC) 设置指定时间的秒字段
setYear()已废弃。请使用 setFullYear() 方法代替
toDateString()把 Date 对象的日期部分转换为字符串
toGMTString()已废弃。请使用 toUTCString() 方法代替
toISOString()使用 ISO 标准返回字符串的日期格式
toJSON()以 JSON 数据格式返回日期字符串
toLocaleDateString()根据本地时间格式,把 Date 对象的日期部分转换为字符串
toLocaleTimeString()根据本地时间格式,把 Date 对象的时间部分转换为字符串
toLocaleString()根据本地时间格式,把 Date 对象转换为字符串
toString()把 Date 对象转换为字符串
toTimeString()把 Date 对象的时间部分转换为字符串
toUTCString()根据世界时,把 Date 对象转换为字符串
UTC()根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数
valueOf()返回 Date 对象的原始值

15. JavaScript Array

15.1 改变原数组的方法

15.1.1 push

笔记

  • 作用:push 方法往数组里面添加元素,返回数组的长度。

15.1.2 unshift

笔记

  • 作用:unshift 方法会在数组的开头添加一个元素,它会返回数组新的长度。

15.1.3 pop

笔记

  • 作用:pop() 方法从数组中删除最后一个元素,并返回该元素的值。

15.1.4 shift

笔记

  • 作用:shift() 方法从数组中删除第一个元素,并返回该元素的值。

15.1.5 sort

笔记

  • 作用:sort() 方法用原地算法对数组的元素进行排序,并返回数组。默认排序顺序是在将元素转换为字符串,然后比较它们的 UTF-16 代码单元值序列时构建的。它返回的就是排序后的数组。

15.1.6 splice

笔记

  • 作用:splice() 方法用于添加或删除数组中的元素,如果删除一个元素,则返回一个元素的数组。 如果未删除任何元素,则返回空数组。

15.1.7 reverse

笔记

  • 作用:reverse() 方法用于颠倒数组中元素的顺序。

15.2 不改变原数组的方法

15.2.1 concat

笔记

  • 作用:concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。

15.2.2 join

笔记

  • 作用:join() 方法用于把数组中的所有元素转换一个字符串,元素是通过指定的分隔符进行分隔的

15.2.3 reduce

笔记

  • 作用:reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

15.2.4 map

笔记

  • 作用:map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

15.2.5 forEach

笔记

  • 作用:forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。

15.2.6 filter

笔记

  • 作用:filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

15.2.7 slice

笔记

  • 作用:slice() 方法可从已有的数组中返回选定的元素。slice() 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。

15.2.8 findIndex

笔记

  • 作用:findIndex 接收一个测试函数,也可以叫做条件函数,最终返回满足该测试函数的元素的索引位置,如果没有找到符合条件的元素,则返回-1。如果满足条件的有多个,那么只会返回第一个满足条件的元素索引。

16. JavaScript Boolean

笔记
Boolean 对象用于转换一个不是 Boolean 类型的值转换为 Boolean 类型值 (true 或者false).

Boolean对象属性

属性描述
constructor返回对创建此对象的Boolean函数的引用
prototype使您有能力向对象添加属性和方法

Boolean对象方法

方法描述
toString()把布尔值转换为字符串,并返回结果
valueOf()返回Boolean对象的原始值

17. JavaScript Math

笔记

  • Math 对象用于执行数学任务。
  • Math 对象并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math()。
  • Math对象属性
属性描述
E返回算术常量 e,即自然对数的底数(约等于2.718)
LN2返回 2 的自然对数(约等于0.693)
LN10返回 10 的自然对数(约等于2.302)
LOG2E返回以 2 为底的 e 的对数(约等于 1.4426950408889634)
LOG10E返回以 10 为底的 e 的对数(约等于0.434)
PI返回圆周率(约等于3.14159)
SQRT1_2返回 2 的平方根的倒数(约等于 0.707)
SQRT2返回 2 的平方根(约等于 1.414)
  • Math对象方法
方法描述
abs(x)返回 x 的绝对值
acos(x)返回 x 的反余弦值
asin(x)返回 x 的反正弦值
atan(x)以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值
atan2(y,x)返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)
ceil(x)对数进行上舍入
cos(x)返回数的余弦
exp(x)返回 Ex 的指数
floor(x)对 x 进行下舍入
log(x)返回数的自然对数(底为e)
max(x,y,z,…,n)返回 x,y,z,…,n 中的最高值
min(x,y,z,…,n)返回 x,y,z,…,n中的最低值
pow(x,y)返回 x 的 y 次幂
random()返回 0 ~ 1 之间的随机数
round(x)四舍五入
sin(x)返回数的正弦
sqrt(x)返回数的平方根
tan(x)返回角的正切
tanh(x)返回一个数的双曲正切函数值
trunc(x)将数字的小数部分去掉,只保留整数部分

18. JavaScript RegExp

笔记

  • 正则表达式是描述字符模式的对象。
  • 正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具。

**语法 **

var patt=new RegExp(pattern,modifiers);

或者更简单的方式:

var patt=/pattern/modifiers;
  • pattern(模式) 描述了表达式的模式
  • modifiers(修饰符) 用于指定全局匹配、区分大小写的匹配和多行匹配
  • 注意:当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 \)。比如,以下是等价的:
var re = new RegExp("\\w+");
var re = /\w+/;

修饰符
修饰符用于执行区分大小写和全局匹配:

修饰符描述
i执行对大小写不敏感的匹配
g执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)
m执行多行匹配

方括号
方括号用于查找某个范围内的字符:

表达式描述
[abc]查找方括号之间的任何字符
[^abc]查找任何不在方括号之间的字符
[0-9]查找任何从 0 至 9 的数字
[a-z]查找任何从小写 a 到小写 z 的字符
[A-Z]查找任何从大写 A 到大写 Z 的字符
[A-z]查找任何从大写 A 到小写 z 的字符
[adgk]查找给定集合内的任何字符
[^adgk]查找给定集合外的任何字符
(red|blue|green)查找任何指定的选项

元字符
元字符(Metacharacter)是拥有特殊含义的字符:

元字符描述
.查找单个字符,除了换行和行结束符
\w查找数字、字母及下划线
\W查找非单词字符
\d查找数字
\D查找非数字字符
\s查找空白字符
\S查找非空白字符
\b匹配单词边界
\B匹配非单词边界
\0查找 NULL 字符
\n查找换行符
\f查找换页符
\r查找回车符
\t查找制表符
\v查找垂直制表符
\xxx查找以八进制数 xxx 规定的字符
\xdd查找以十六进制数 dd 规定的字符
\uxxx查找以十六进制数 xxxx 规定的 Unicode 字符

量词

量词描述
n+匹配任何包含至少一个 n 的字符串。例如,/a+/ 匹配 “candy” 中的 “a”,“caaaaaaandy” 中所有的 “a”。
n*匹配任何包含零个或多个 n 的字符串。例如,/bo*/ 匹配 “A ghost booooed” 中的 “boooo”,“A bird warbled” 中的 “b”,但是不匹配 “A goat grunted”。
n?匹配任何包含零个或一个 n 的字符串。例如,/e?le?/ 匹配 “angel” 中的 “el”,“angle” 中的 “le”。
n{X}匹配包含 X 个 n 的序列的字符串。例如,/a{2}/ 不匹配 “candy,” 中的 “a”,但是匹配 “caandy,” 中的两个 “a”,且匹配 “caaandy.” 中的前两个 “a”。
n{X,}X 是一个正整数。前面的模式 n 连续出现至少 X 次时匹配。例如,/a{2,}/ 不匹配 “candy” 中的 “a”,但是匹配 “caandy” 和 “caaaaaaandy.” 中所有的 “a”。
n{X,Y}X 和 Y 为正整数。前面的模式 n 连续出现至少 X 次,至多 Y 次时匹配。例如,/a{1,3}/ 不匹配 “cndy”,匹配 “candy,” 中的 “a”,“caandy,” 中的两个 “a”,匹配 “caaaaaaandy” 中的前面三个 “a”。注意,当匹配 “caaaaaaandy” 时,即使原始字符串拥有更多的 “a”,匹配项也是 “aaa”。
n$匹配任何结尾为 n 的字符串
^n匹配任何开头为 n 的字符串
?=n匹配任何其后紧接指定字符串 n 的字符串
?!n匹配任何其后没有紧接指定字符串 n 的字符串

RegExp对象属性

属性描述
constructor返回一个函数,该函数是一个创建 RegExp 对象的原型
global判断是否设置了 “g” 修饰符
ignoreCase判断是否设置了 “i” 修饰符
lastIndex用于规定下次匹配的起始位置
multiline判断是否设置了 “m” 修饰符
source返回正则表达式的匹配模式

RegExp对象方法

方法描述
compile在 1.5 版本中已废弃。 编译正则表达式
exec检索字符串中指定的值。返回找到的值,并确定其位置
test检索字符串中指定的值。返回 true 或 false
toString返回正则表达式的字符串

19. JavaScript call()和apply()

笔记

  • 这两个方法都是 函数对象的方法 ,需要通过 函数对象 来调用。
  • 当对函数调用call()和apply()都会 调用函数执行
  • 在调用call()和apply()可以将一个对象指定为 第一个参数 ,此时这个对象将会成为函数执行时的this
  • call()方法可以将实参在对象之后依次传递
  • apply()方法需要将实参封装到一个数组中统一传递
fun.call(obj,2,3)
fun.applu(obj,[2,3])
  • this的情况:
  1. 函数 形式调用时,this永远都是 window
  2. 方法 的形式调用时,this是 调用方法的对象
  3. 构造函数的形式 调用时,this是 新创建的那个对象
  4. 使用 call和apply 调用时,this是 指定的那个对象

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/939447.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

图(dfs与bfs)算法2

进度&#xff1a;15/100 原题1&#xff1a; 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 &#xff08;力扣的图&#xff09; 原题2&#xff1a; 给定二叉树的根节点 root &#xff0c;返回所有左叶子之和。 原题3&#xff1a; 给…

【NLP 16、实践 ③ 找出特定字符在字符串中的位置】

看着父亲苍老的白发和渐渐老态的面容 希望时间再慢一些 —— 24.12.19 一、定义模型 1.初始化模型 ① 初始化父类 super(TorchModel, self).__init__()&#xff1a; 调用父类 nn.Module 的初始化方法&#xff0c;确保模型能够正确初始化。 ② 创建嵌入层 self.embedding n…

lightRAG 论文阅读笔记

论文原文 https://arxiv.org/pdf/2410.05779v1 这里我先说一下自己的感受&#xff0c;这篇论文整体看下来&#xff0c;没有太多惊艳的地方。核心就是利用知识图谱&#xff0c;通过模型对文档抽取实体和关系。 然后基于此来构建查询。核心问题还是在解决知识之间的连接问题。 论…

基于JAVA+SpringBoot+Vue的反欺诈平台

基于JAVASpringBootVue的反欺诈平台 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码下载链接&#x1f345; 哈喽兄弟…

Gartner发布2025年网络安全主要趋势:实现转型和嵌入弹性两大主题下的9个趋势

持续不断的技术和业务中断考验着安全计划和团队绩效的极限。安全和风险管理领导者必须实现业务价值&#xff0c;并加倍努力增强组织、个人和团队的韧性&#xff0c;以证明安全计划在 2025 年的有效性。 机会 面对不断变化的技术以及企业希望利用这些技术获得战略利益的愿望&…

基于Spring Boot的新能源汽车个性化推荐系统

一、系统背景与意义 随着新能源汽车市场的快速发展&#xff0c;消费者对新能源汽车的需求日益多样化。为了满足消费者的个性化需求&#xff0c;提高购车体验&#xff0c;开发一个基于Spring Boot的新能源汽车个性化推荐系统显得尤为重要。该系统能够根据用户的偏好、历史行为等…

YOLOV8 原理和实现全解析(合适新人)

YOLOV8 原理和实现全解析 0 简介1 YOLOv8 概述2 模型结构设计3 Loss 计算4 训练数据增强5 训练策略6 模型推理过程7 特征图可视化总结 0 简介 图 1&#xff1a;YOLOv8-P5 模型结构 以上结构图由 RangeKinggithub 绘制。 YOLOv8 是 Ultralytics 公司在 2023 年 1月 10 号开源的…

【WRF教程第四期】WRF 初始化概述:以4.5版本为例

WRF 初始化&#xff08;WRF Initialization&#xff09; Building Initialization Programs编译方式 理想案例初始化&#xff08;Initialization for Idealized Cases&#xff09;理想化案例的输入可用的理想化案例 现实案例初始化&#xff08;Initialization for Real Data Ca…

vmcore-dmesg交叉编译(arm64平台)

kexec工具&#xff1a;能够将第二内核&#xff08;捕获内核&#xff09;装载到指定内存运行。 vmcore-dmesg工具&#xff1a;用于提取vmcore的dmesg信息。 1、源码下载地址&#xff1a; Index of /pub/linux/utils/kernel/kexec/ 2、交叉编译&#xff1a; 采用aarch64-lin…

计算机网络-L2TP VPN基础概念与原理

一、概述 前面学习了GRE和IPSec VPN&#xff0c;今天继续学习另外一个也很常见的VPN类型-L2TP VPN。 L2TP&#xff08;Layer 2 Tunneling Protocol&#xff09; 协议结合了L2F协议和PPTP协议的优点&#xff0c;是IETF有关二层隧道协议的工业标准。L2TP是虚拟私有拨号网VPDN&…

OpenCV学习——图像融合

import cv2 as cv import cv2 as cvbg cv.imread("test_images/background.jpg", cv.IMREAD_COLOR) fg cv.imread("test_images/forground.png", cv.IMREAD_COLOR)# 打印图片尺寸 print(bg.shape) print(fg.shape)resize_size (1200, 800)bg cv.resize…

ChatGPT重大更新:新增实时搜索和高级语音

12月17日消息&#xff0c;据报道&#xff0c;OpenAI开启了第八天技术分享直播&#xff0c;对ChatGPT搜索功能进行了大量更新。 此次ChatGPT新增的功能亮点纷呈。其中&#xff0c;实时搜索功能尤为引人注目。OpenAI对搜索算法进行了深度优化&#xff0c;使得用户提出问题后&…

30. Three.js案例-绘制并渲染圆弧

30. Three.js案例-绘制并渲染圆弧 实现效果 知识点 WebGLRenderer WebGLRenderer 是 Three.js 中用于渲染 3D 场景的核心类。它利用 WebGL 技术在浏览器中渲染 3D 图形。 构造器 new THREE.WebGLRenderer(parameters) 参数类型描述parametersObject可选参数对象&#xff…

YOLO8 改进 009:引入 ASFF 对 YOLOv8 检测头进行优化(适用于小目标检测任务)

论文题目&#xff1a;Learning Spatial Fusion for Single-Shot Object Detection 论文地址&#xff1a;Paper - ASFF 官方源码&#xff1a;GitHub - GOATmessi8/ASFF 简 介 多尺度特征融合是解决多尺度目标检测问题的关键技术&#xff0c;其中 FPN&#xff08;特征金字塔网络…

【数据集】生菜病害检测数据集530张6类YOLO+VOC格式

数据集格式&#xff1a;VOC格式YOLO格式 压缩包内含&#xff1a;3个文件夹&#xff0c;分别存储图片、xml、txt文件 JPEGImages文件夹中jpg图片总计&#xff1a;530 Annotations文件夹中xml文件总计&#xff1a;530 labels文件夹中txt文件总计&#xff1a;530 标签种类数&#…

设计模式2

23中设计模式分类 创建型模式&#xff1a;对象实例化的模式&#xff0c;创建型模式用于解耦对象的实例化过程。&#xff08;对象的创建和对象的使用分离&#xff09; 5种&#xff1a;单例模式、工厂模式、抽象工厂模式、原型模式、建造者模式 结构型模式&#xff1a;把类或对…

CSS边框的样式

边框阴影 让元素更有立体感 img {box-shadow: 2px 10px 5px 20px #ff0000;border-radius: 44px;}语法&#xff1a;box-shadow&#xff1a;值1 值2 值3 值4 值5 值1&#xff1a;水平阴影的位置值2&#xff1a;垂直阴影的位置值3&#xff1a;模糊距离值4&#xff1a;阴影的尺寸…

Spring篇--xml方式整合第三方框架

Spring xml方式整合第三方框架 xml整合第三方框架有两种整合方案&#xff1a; ​ 不需要自定义名空间&#xff0c;不需要使用Spring的配置文件配置第三方框架本身内容&#xff0c;例如&#xff1a;MyBatis&#xff1b; ​ 需要引入第三方框架命名空间&#xff0c;需要使用…

Javascript-web API-day02

文章目录 01-事件监听02-点击关闭广告03-随机点名案例04-鼠标经过或离开事件05-可点击的轮播图06-小米搜索框07-键盘类型事件08-键盘事件-发布评论案例09-focus选择器10-评论回车发布11-事件对象12-trim方法13-环境对象14-回调函数15-tab栏切换 01-事件监听 <!DOCTYPE html…

powershell(1)

免责声明 学习视频来自 B 站up主泷羽sec&#xff0c;如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识&#xff0c;以下代码、网站只涉及学习内容&#xff0c;其他的都与本人无关&#xff0c;切莫逾越法律红线&#xff0c;否则后果自负。 泷羽sec官网&#xff1a;http…