目录
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
用于数组(添加或删除元素)。