大家好,最近准备总结一下JS的经验,分享分享,有不对的欢迎讨论哈~
JS作为前端的基础技能,每一位前端开发都要运用熟练,但你真的会写JS吗?js全称JavaScript,是运行在浏览器上的脚本语言,连续多年被评为全球最受欢迎的编程语言。
文接上篇【JS经验分享】你真的会写JS吗?满满干货,建议读三遍(1)_啥咕啦呛的博客-CSDN博客,我们继续修炼JS,打磨JS,让自己的代码看起来舒服,写起来简洁,用起来容易。
目录
11.默认参数
12.字符连接用模板字符串
13.类型转换
string强制转换为数字
使用Boolean过滤数组中的所有假值
14.巧用find查找对象数组中属性为特定值的对象
15.按位运算符方法仅适用于32位整数
16.在数组中查找最大值和最小值
17.数学指数幂函数的简写
18.取整 |0
19.判断奇偶数 &1
20.计算取整
add = (test1 = 1, test2 = 2) => (test1 + test2);
add() //output: 3
const welcome = `Hi ${test1} ${test2}`;
常用:也可以使用 +
来转化字符串为数字
let test1 = +'123';
let test2 = +'12.3';
可以用 *1
来转化为数字(实际上是调用 .valueOf
方法) 然后使用 Number.isNaN
来判断是否为 NaN
,或者使用 a!==a
来判断是否为 NaN
,因为 NaN!==NaN
'32' * 1
// 32
'ds' * 1
// NaN
null * 1
// 0
undefined * 1
// NaN
1 * { valueOf: ()=>'3' }
// 3
其他类型用加号转数字后:
+ '123'
// 123
+ 'ds'
// NaN
+ ''
// 0
+ null
// 0
+ undefined
// NaN
+ { valueOf: ()=>'3' }
// 3
我们知道JS中有一些假值:false
, null
, 0
, ""
, undefined
, NaN
,怎样把数组中的假值快速过滤呢,可以使用Boolean构造函数来进行一次转换
const compact = arr => arr.filter(Boolean)
compact([0, 1, false, 2, '', 3, 'a', 'e' * 23, NaN, 's', 34])
// [ 1, 2, 3, 'a', 's', 34 ]
filteredData = data.find(data => data.type === 'test1' && data.name === name);
可以使用双位操作符来替代 Math.floor()
。双否定位操作符的优势在于它执行相同的操作运行速度更快。
~~1.9 === 1 // true
不过要注意,对整数来说 ~~
运算结果与 Math.floor()
运算结果相同,而对于负数来说不相同:
~~4.5
// 4
Math.floor(4.5)
// 4
~~-4.5
// -4
Math.floor(-4.5)
// -5
const arr = [1, 2, 3];
Math.max(…arr); // 3
Math.min(…arr); // 1
2**3 // 8
对一个数字 |0
可以取整,负数也同样适用, num|0
20.15 | 0
// 20
-20.15 | 0
// -20
~~number :取整之中最快的,位运算
var num1 = ~~20.15, //20
num2 = ~~(-20.15); //-20
number^0
var num1 = 20.15^0, //20
num2 = (-20.15)^0; //-20
number<<0
var num1 = 20.15 << 0, //20
num2 = (-20.15) << 0, //-20
对一个数字 &1
可以判断奇偶数,负数也同样适用, num&1
const num=3;
!!(num & 1)
// true
!!(num % 2)
// true
四舍五入Math.round(number):Math.round()是Math对象中的一个函数,将数值四舍五入为最接近的整数。
var num1 = Math.round(20.1), //20
num2 = Math.round(20.5), //21
num3 = Math.round(20.9), //21
num4 = Math.round(-20.1), //-20
num5 = Math.round(-20.5), //-20 注意这里是-20而不是-21
num6 = Math.round(-20.9); //-21
向上取整Math.ceil(number) :Math.ceil()取向上最接近的整数。
var num1 = Math.ceil(20.1), //21
num2 = Math.ceil(20.5), //21
num3 = Math.ceil(20.9), //21
num4 = Math.ceil(-20.1), //-20
num5 = Math.ceil(-20.5), //-20
num6 = Math.ceil(-20.9); //-20
向下取整Math.floor(number) : Math.floor()`取向下最接近的整数。
var num1 = Math.floor(20.1), //20
num2 = Math.floor(20.5), //20
num3 = Math.floor(20.9), //20
num4 = Math.floor(-20.1), //-21
num5 = Math.floor(-20.5), //-21
num6 = Math.floor(-20.9), //-21