이 글은 일상적인 코딩의 행복도를 높일 수 있는 JS에서 사용되는 몇 가지 팁을 주로 소개합니다. 수시로 업데이트될 예정입니다~
관심 있는 학생들은 글 마지막에 있는 위챗 그룹에 가입하여 함께 토론할 수 있습니다~
에 대한 문자열 강제는 *1
来转化为数字(实际上是调用.valueOf
메소드를 사용하여 수행할 수 있습니다.
그런 다음 Number.isNaN
을 사용하여 NaN
인지 확인하거나 a !== a
를 사용하여 NaN, <code>NaN !== NaN
Number.isNaN
来判断是否为NaN
,或者使用 a !== a
来判断是否为NaN
,因为 NaN !== NaN
'32' * 1 // 32'ds' * 1 // NaNnull * 1 // 0undefined * 1 // NaN1 * { valueOf: ()=>'3' } // 3复制代码
常用: 也可以使用+
来转化字符串为数字
+ '123' // 123+ 'ds' // NaN+ '' // 0+ null // 0+ undefined // NaN+ { valueOf: ()=>'3' } // 3复制代码
可以使用 字符串+Object
的方式来转化对象为字符串(实际上是调用 .toString()
方法)
'the Math object:' + Math // "the Math object:[object Math]"'the JSON object:' + JSON // "the JSON object:[object JSON]"复制代码
当然也可以覆盖对象的toString
和valueOf
方法来自定义对象的类型转换:
2 * { valueOf: ()=>'3' } // 6'J' + { toString: ()=>'S' } // "JS"复制代码
《Effective JavaScript》P11:当
+
用在连接字符串时,当一个对象既有toString
方法又有valueOf
方法时候,JS通过盲目使用valueOf
'' + {toString:()=>'S',valueOf:()=>'J'} // J复制代码valueOf
方法强制转换为数字,通过toString
方法强制转换为字符串
const compact = arr => arr.filter(Boolean) compact([0, 1, false, 2, '', 3, 'a', 'e' * 23, NaN, 's', 34]) // [ 1, 2, 3, 'a', 's', 34 ]复制代码
我们知道JS中有一些假值:false
,null
,0
,""
,undefined
,NaN
,怎样把数组中的假值快速过滤呢,可以使用Boolean构造函数来进行一次转换
Math.floor(4.9) === 4 //true// 简写为:~~4.9 === 4 //true复制代码
可以使用双位操作符来替代正数的 Math.floor( )
,替代负数的Math.ceil( )
。双否定位操作符的优势在于它执行相同的操作运行速度更快。
~~4.5 // 4Math.floor(4.5) // 4Math.ceil(4.5) // 5~~-4.5 // -4Math.floor(-4.5) // -5Math.ceil(-4.5) // -4复制代码
不过要注意,对正数来说 ~~
运算结果与 Math.floor( )
运算结果相同,而对于负数来说与Math.ceil( )
的运算结果相同:
let param1 = expr1 && expr2let param2 = expr1 || expr2复制代码
我们知道逻辑与&&
与逻辑或||
일반적으로 사용됨: +
를 사용하여 문자열을 숫자로 변환할 수도 있습니다
let variable1let variable2 = variable1 || 'foo'复制代码1.2 개체는 강제로 문자열로 변환됩니다
string+Object
를 사용하여 개체를 문자열로 변환할 수 있습니다(실제로 호출 .toString()
메서드)&&
为取假运算,从左到右依次判断,如果遇到一个假值,就返回假值,以后不再执行,否则返回最后一个真值||
为取真运算,从左到右依次判断,如果遇到一个真值,就返回真值,以后不再执行,否则返回最后一个假值let variable = param && param.prop复制代码
运算符 | 示例 | 说明 |
---|---|---|
&& |
expr1&&expr2 |
如果expr1 能转换成false则返回expr1,否则返回expr2. 因此, 在Boolean环境中使用时, 两个操作结果都为true时返回true,否则返回false. |
|| | expr1||expr2 | 如果expr1能转换成true则返回expr1,否则返回expr2. 因此,在boolean环境(在if的条件判断中)中使用时, 二者操作结果中只要有一个为true,返回true;二者操作结果都为false时返回false. |
! |
!expr 1.3 | 0 // 1-1.9 | 0 // -1复制代码 | 물론, 개체의
const num=3; !!(num & 1) // true!!(num % 2) // true复制代码 | "효과적인 JavaScript" P11:
false
, null
, 0
, ""
, undefine
, NaN
, false 값을 빠르게 필터링하는 방법 배열에서는 부울 생성자를 사용하여 변환을 수행할 수 있습니다 🎜mandatory = ( ) => { throw new Error('Missing parameter!'); } foo = (bar = mandatory( )) => { // 这里如果不传入参数,就会执行manadatory函数报出错误 return bar; }复制代码
Math.floor( )
를 바꾸고 Math.ceil( )
을 음수로 바꿉니다. 이중 부정 위치 지정 연산자의 장점은 동일한 작업을 더 빠르게 수행한다는 것입니다. 🎜function calcCircumference(diameter) { return Math.PI * diameter }// 简写为:calcCircumference = diameter => ( Math.PI * diameter; )复制代码🎜하지만 양수의 경우
~~
의 결과는 Math.floor( )
와 같고, 음수의 경우에는 다음과 같습니다. 수학 .ceil( )
의 연산 결과는 같습니다. 🎜function foo(){ if(a !== b){ console.log('aaa') }else{ console.log('bbb') } } // 优化后function foo(){ if(a != b){ foo = function(){ console.log('aaa') } }else{ foo = function(){ console.log('bbb') } } return foo(); }复制代码
&&
AND 논리 또는 ||
는 단락 연산자입니다. 단락 연산자는 전자가 왼쪽에서 오른쪽으로의 연산 요구 사항을 충족하는 경우를 의미합니다. 후자는 더 이상 실행되지 않습니다.
다음과 같이 이해할 수 있습니다. 🎜🎜🎜&&
는 거짓 연산입니다. 거짓 값이 발견되면 거짓 값이 반환되고 다시 실행되지 않습니다. 그렇지 않으면 마지막 참값이 반환됩니다. 🎜||
는 참 연산으로, 왼쪽에서 오른쪽으로 판단되며, 참 값이 발견되면 참 값이 반환됩니다. 다시 실행되지 않습니다. 그렇지 않으면 마지막 false 값이 반환됩니다.var sca = function() { console.log('msg') sca = function() { console.log('foo') } } sca() // msgsca() // foosca() // foo复制代码
연산자 | 예 th> | 설명 | 🎜 thead>
---|---|---|
위 내용은 행복을 향상시킬 수 있는 JS의 팁의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!