目录
1.JavaScript中常用的数组方法有哪些?
2.JavaScript的同源策略?
3.JavaScript中的 NaN 是什么?
4.JavaScript中的split、slice、splice函数区别?
1.JavaScript中常用的数组方法有哪些?
在 JavaScript 中,数组方法非常丰富,以下是一些常用的方法:
push(): 向数组末尾添加一个或多个元素,并返回新的数组长度。pop(): 移除数组末尾的元素,并返回该元素。shift(): 移除数组开头的元素,并返回该元素。unshift(): 向数组开头添加一个或多个元素,并返回新的数组长度。concat(): 合并两个或多个数组,并返回一个新数组。join(): 将数组中的所有元素连接成一个字符串。slice(): 返回数组的一个片段,新数组从指定的起始索引到结束索引(不包括结束索引)之间的元素。splice(): 从数组中添加或删除元素,并返回被删除的元素。forEach(): 对数组的每个元素执行一次提供的函数。map(): 创建一个新数组,其结果是对原数组的每个元素应用提供的函数后的返回值。filter(): 创建一个新数组,其包含通过提供函数测试的所有元素。reduce(): 对数组中的所有元素应用一个函数,从而将其减少为单一值。find(): 返回数组中第一个满足提供函数的元素。some(): 测试数组中是否有任意一个元素满足提供函数的条件。every(): 测试数组中是否所有元素都满足提供函数的条件。sort(): 对数组中的元素进行排序,并返回排序后的数组。reverse(): 反转数组中元素的顺序,并返回数组。
2.JavaScript的同源策略?
同源策略(Same-Origin Policy)是浏览器用于隔离不同源的网页以增强安全性的机制。它要求来自不同源的网页不能相互访问彼此的资源。同源是指协议、域名和端口号都相同。
- 协议: 比如
http和https是不同的协议。 - 域名: 比如
example.com和example.org是不同的域名。 - 端口号: 比如
http://example.com:80和http://example.com:8080使用了不同的端口。
同源策略主要影响以下几种操作:
- DOM访问: 脚本只能访问相同源文档的 DOM。
- AJAX 请求: 脚本只能向相同源的服务器发起请求。
- Cookies: 只能访问同源的 cookies。
3.JavaScript中的 NaN 是什么?
NaN(Not-a-Number)是一个特殊的值,表示某个值不是一个合法的数字。NaN 是 JavaScript 中的一个全局属性,其类型是 Number,但其值不是一个有效的数字。常见情况下,NaN 出现在数学运算失败或不能定义的情况下,例如:
let result = 0 / 0; // 结果是 NaN
let invalidNumber = Number("abc"); // 结果是 NaN
需要注意的是,NaN 与任何值(包括 NaN 自身)的比较结果都是 false,这意味着 NaN === NaN 结果为 false。检测 NaN 通常使用 Number.isNaN() 方法:
Number.isNaN(result); // 返回 true
4.JavaScript中的split、slice、splice函数区别?
(1)split(separator, limit): 用于将字符串分割成一个数组。
- 参数:
separator(可选):指定分隔符,可以是字符串或正则表达式。limit(可选):限制分割的数量。
- 返回值: 分割后的字符串数组。
- 例子:let str = "a,b,c";
let arr = str.split(","); // ["a", "b", "c"]
(2)slice(start, end): 用于从数组中提取一个片段,返回一个新的数组,不改变原数组。
- 参数:
start:起始索引(包含),默认为0。end(可选):结束索引(不包含),默认为数组的长度。
- 返回值: 从
start到end之间的元素组成的新数组。 - 例子: let arr = [1, 2, 3, 4, 5];
let newArr = arr.slice(1, 4); // [2, 3, 4]
(3)splice(start, deleteCount, item1, item2, ...): 用于从数组中添加或删除元素,改变原数组。
- 参数:
start:起始索引。deleteCount(可选):要删除的元素个数。如果为0,则不删除。item1, item2, ...(可选):要添加的新元素。
- 返回值: 被删除的元素数组(如果有删除的话)。
- 例子:let arr = [1, 2, 3, 4, 5];
let removed = arr.splice(2, 2, 6, 7); // [3, 4], arr 变为 [1, 2, 6, 7, 5]
split 用于字符串,slice 用于数组(返回片段),splice 用于数组(添加或删除元素)。