0

오늘 내가 이해하지 못했던 일부 JS를 건너 뛰었습니다. 비트 연산을 검색하면 실제로 도움이되지 않습니다. 누군가가 아래에서 설명 할 수 있습니까?코딩 설명 : JavaScript에서 비트 OR 문자로 설정되는 변수

 function createExcerpt(string, maxLength) { 
      // Set a default value of maxLength of 110 
      maxLength = maxLength | 110; 
      ... 

파이프 문자가 비트 OR 인 것을 읽었지 만 위의 상황에서 손실이 발생했습니다. 컨텍스트에 대해 더 많은 기능을 게시해야한다면 알려주십시오.

+1

일반적으로 기본 인수는 논리 OR ('|| ')로 수행됩니다 : 당신이 사용할 수 ES6이 가정

그리고 더 나은 방법, 함수 호출에 직접 구운 기본 인수를 사용하는 것 ... 그 의견을 감안할 때, 실수처럼 보입니다. 비트 OR은 "디폴트 값을 설정하지 않음" – qxz

+0

(기본 args에 대해'|| '를 사용한다.) [http://www.codereadability.com/javascript-default-parameters-with-or- 연산자 /), 얼마나 자주 보느냐에 불구하고) – qxz

답변

2

이전 줄에 주석이 있다는 것을 감안하면 간단한 오타가있는 것 같습니다. 거의 확실하게 될 운명 그래서 기본값

설정은 일반적으로 논리적or 연산자, ||와 함께 할 것입니다 : maxLength가있다 그러나

maxLength = maxLength || 110; 

,이 사실은 이후 나쁜 생각 false 값 (예 : 0)으로 설정하면 기본값으로 바뀝니다. 그 수 있습니다 당신이 원하는대로하지만 그것은 결코 분명합니다.

아마 약간 더 자세한하지만 확실히 더 명확 를 선택하는 것입니다 :

if (maxLength === undefined) { maxLength = 110; } 

그것은 여전히 ​​한 줄에 맞는 의도는 매우 다릅니다.

function createExcerpt(string, maxLength = 110) { 
    ... 
} 
2

이것은 실수입니다. 논리 OR (||)은 널 통합 연산자로 사용됩니다. 비트 단위 ORing은 주석에 표시된 효과를 갖지 않습니다. 몇 가지 테스트를 통해 실행하여 직접 테스트 할 수 있습니다.

110 | 110 = 110 
120 | 110 = 126 
90 | 110 = 126 
null | 110 = 110 
50 | 110 = 126 
200 | 110 = 238 

당신은 결과가 꽤 직관적는 "최대 길이"인수를 전달하는 사람에게이 될 것입니다 몇 가지 예에서 볼 수 있습니다.