JavaScript经典代码欣赏与技巧解析
版权申诉
22 浏览量
更新于2024-08-18
收藏 16KB DOCX 举报
"这是一份JavaScript代码欣赏文档,包含了多个经典和实用的JavaScript代码片段,适合正在学习或已经熟悉JavaScript的开发者参考。"
在JavaScript编程中,这些代码片段展示了语言的一些核心特性和巧妙用法:
1. 取整并转换为数值型:
`'10.567890' | 0` 结果:10
`'10.567890' ^ 0` 结果:10
`-2.23456789 | 0` 结果:-2
`~~-2.23456789` 结果:-2
这里利用了位操作符来快速取整,`| 0` 和 `~~` 对非负数效果相同,`^ 0` 对正数效果等同于 `| 0`。
2. 日期转数值:
`var d = +new Date();` // 例如:1295698416792
`Date` 对象可以用 `+` 操作符转换为时间戳,即自1970年以来的毫秒数。
3. 类数组对象转数组:
`var arr = [].slice.call(arguments);`
`arguments` 是函数内部的一个类数组对象,`slice.call` 能将其转换为真正的数组。
4. 生成随机字符串:
`Math.random().toString(16).substring(2);` // 14位16进制随机字符串
`Math.random().toString(36).substring(2);` // 11位包含0-9,a-z的随机字符串
`toString()` 方法用于将浮点数转换为特定基数的字符串。
5. 合并数组:
`var a = [1, 2, 3]; var b = [4, 5, 6]; Array.prototype.push.apply(a, b);`
使用 `apply` 方法将 `push` 函数应用于 `a` 数组,将 `b` 数组的元素添加到 `a` 的末尾。
6. 用0补全位数:
```
function prefixInteger(num, length) {
return (num / Math.pow(10, length)).toFixed(length).substr(2);
}
```
通过 `toFixed` 方法保留指定长度的小数位,然后去除前导的 '0.'。
7. 交换变量值:
`a = [b, b = a][0];`
这是一种简洁的变量交换方式,利用数组赋值时的临时对象特性。
8. 插入数组元素:
```
var a = [1, 2, 3, 7, 8, 9];
var b = [4, 5, 6];
var insertIndex = 3;
a.splice.apply(a, Array.concat(insertIndex, 0, b));
```
使用 `splice` 方法在 `a` 数组的指定位置 `insertIndex` 插入 `b` 数组的所有元素。
9. 删除数组元素:
`var a = [1, 2, 3, 4, 5]; a.splice(3, 1);`
`splice` 方法用于删除数组中的元素,第二个参数是删除的个数。
10. 快速取数组最大值和最小值:
```
Math.max.apply(Math, [1, 2, 3]) // 3
Math.min.apply(Math, [1, 2, 3]) // 1
```
使用 `apply` 将数组作为参数传递给 `Math.max` 和 `Math.min` 函数,以求得数组中的最大值和最小值。
11. 条件推断:
```
var a = b1; // 相当于 if (b) { a = 1; }
var a = b || 1; // 相当于 if (b) { a = b; } else { a = 1; }
```
在JavaScript中,非零值被视为真,零、空字符串、`null` 和 `undefined` 视为假。因此,`b || 1` 会返回 `b` 如果 `b` 为真,否则返回 `1`。
12. 推断IE:
```
var ie =/*@cc_on!@*/false;
```
这是一种条件编译的技巧,仅在Internet Explorer中执行,用于检测是否运行在IE环境下。
以上代码展示了JavaScript在处理数据类型转换、数组操作、逻辑判断等方面的灵活性和高效性,对于提升编程技巧和理解JavaScript的内在机制大有裨益。继续探索和实践这些代码,可以帮助开发者更好地掌握JavaScript语言。
2023-12-08 上传
2023-12-08 上传
2024-09-06 上传
2022-01-20 上传
2022-11-04 上传
2024-06-03 上传