이 두 함수는 기능면에서 동등한가요? 그렇다면 어떻게 중요합니까?부울() 함수를 이해하지 못합니다.
arr.filter(function(val){
return Boolean(val)
});
arr.filter(Boolean);
또한이 두 기능적으로 동일합니까?
var x = new Boolean(expression);
var x = Boolean(expression);
이 두 함수는 기능면에서 동등한가요? 그렇다면 어떻게 중요합니까?부울() 함수를 이해하지 못합니다.
arr.filter(function(val){
return Boolean(val)
});
arr.filter(Boolean);
또한이 두 기능적으로 동일합니까?
var x = new Boolean(expression);
var x = Boolean(expression);
을 사용하는 하나는 부울의 인스턴스를 만들고 다른 하나는 전달 된 것과 동일한 부울을 반환합니다. 예를 들어 사실/거짓 값을 실제 부울 true/false 값으로 설정합니다.
console.log("Is instance: ", (new Boolean(true)) instanceof Boolean);
console.log("Is not instance: ", Boolean(true) instanceof Boolean);
console.log("truthy to bool: ", Boolean(-1));
console.log("falsey to bool: ", Boolean(0));
console.log("falsey to bool: ", Boolean(""));
console.log("truthy to bool: ", Boolean("test"));
그들은 또한 조건문에서 사용 할 방법이 다르다. 예를 들어 원시 부울 값은 당신이
if(true) //
if(false) //
조건
에서 혼자 사용할 수 있습니다하지만 당신은 혼자가 부울 인스턴스와 테스트하려고하면이 객체이며, 모든 객체가 truthy 한, 조건은 항상 true
될 것입니다, 심지어 빈 객체 두 경우 모두 부울 값이 filter
내부로 돌아갑니다 때문에이 같은 일이 발생한다는 점에서
var d = new Boolean(false);
if(d){
console.log("Gets called even though the Boolean instance holds a false value");
}
첫 번째는 동일합니다
. 여기arr.filter(Boolean);
Boolean
콜백 방법 등 값 간접적 Boolean
에서 반환로서 익명 함수를 사용
arr.filter(function(val){
return Boolean(val)
});
하는 동안. 그러나 두 경우 모두 값이
Boolean
으로 전달 된 다음 결과가 동일하도록 반환됩니다. 아래는 동일하지 않을 것이지만
참고 :
위에서 언급 한 바와 같이arr.filter(function(val){
return new Boolean(val);
});
, 부울의 인스턴스는 객체이며, 그것은 항상 truthy 값이됩니다. 위의 예에서 배열의 모든 요소는 테스트를 통과하므로 필터링하려고했던 것과 동일한 배열로 끝납니다.//developer.mozilla :
익명 함수의 사용은 당신이 궁극적으로 Boolean
고마워요. –
첫 번째 조각, 예이 기능적으로 동일합니다.
두 번째 버전 이러한 결과는 서로 다른 값을 갖습니다. 첫 번째는 true/false 값을 갖는 Boolean
오브젝트 인스턴스가되고, 두 번째는 프리미티브 truthy/falsey 값이됩니다.
자세히 알아보기 here.
첫 번째 스 니펫, 어떻게? –
['new'] (HTTPS에 전달하기 전에
val
를 조작 예를 들어, 부울val
를 반환/처리하기 전에 다른 일을 할 수 있습니다. org/ko-ko/docs/Web/JavaScript/Reference/Operators/new) 객체의 인스턴스를 만듭니다. –'console.log'에 해당 값을 넣고 테스트하십시오.'new'는 항상'object'를 반환 할 것입니다. – Rayon