Javascript의 유형 강제
6426 단어 beginnersjavascript
유형 강제는 Javascript가 주변 코드의 컨텍스트를 기반으로 값에 발생하는 자동 변경입니다. 예를 들어 다음과 같은 변수를 선언하는 경우:
let someNum = 4;
let stringNum = "7";
let aString = "sixteen";
이러한 변수를 사용하여 일부 기능이나 조작을 수행하려면
stringNum
를 aString
와 매우 간단하게 연결할 수 있습니다.stringNum + aString; // output: '7sixteen'
그러나
stringNum
에 someNum
를 더하면 어떻게 될까요? 하나는 문자열이고 다른 하나는 정수입니다! 무슨 일이 일어날 것? Type Coercion, 그게 무슨 일이야. Javascript는 숫자이기도 한 단일 문자열을 보고 두 숫자를 합칠 가능성이 훨씬 더 높다고 가정합니다. 마찬가지로 aString
를 someNum
와 연결하려고 하면 javascript는 긴 문자열을 보고 원하는 숫자 4에 ascii 문자 코드의 합계를 추가하는 대신 숫자를 문자열로 만들고 연결한다고 가정합니다.stringNum + someNum; // output: 11
aString + someNum; // output: 'sixteen4'
주의하지 않으면 이상한 오류가 발생할 수 있지만 단락 논리 형태의 매우 우아한 코드도 허용합니다. 값
null, undefined, false, ''
및 0
는 javascript에서 거짓이며 다른 모든 값은 참입니다. 이는 자바스크립트 함수가 부울을 예상할 때 해당 변수의 진실성에 따라 유형이 true
또는 false
로 강제됨을 의미합니다. 여기 몇 가지 예가 있어요.("" || "some populated string."); // evals to true
(0 || null); //evals to false
(1 && undefined); //evals to false
우리는 자바스크립트에서 유형 강제의 이 참 속성과 거짓 속성을 사용하여 단락 논리라고 하는 것에서도 우아한 코드를 작성할 수 있습니다. 예를 들어 어떤 주제에 대해 블로그를 운영하는 웹사이트가 있다고 가정해 보겠습니다. 이메일 제공은 가입 과정에서 선택 사항입니다. 하지만 이메일을 보내주신 모든 분들께는 뉴스레터를 보내드립니다. 예시 사용자는 다음과 같습니다.
{
"users": {
"user_id_string_a": {
"name": "Stephen Strange",
"email": null
},
"user_id_string_b": {
"name": "Tony Stark",
"email": "[email protected]"
}
}
}
우리는 ol' Steve가 그의 이메일을 제공하지 않았지만 Tony가 제공한 것을 볼 수 있습니다. 유형 강제를 사용하여 이메일이 있는 사용자에게 뉴스레터를 보내지만 이메일이 없는 사용자는 건너뛰는 코드를 작성할 수 있는 방법이 있습니까? 네, 하지만 당신은 아마 그것이 오는 것을 보았을 것입니다. 다음과 같이 작성할 수 있습니다.
function SendAllMail(users){
for(user in users){
user.email && sendNewsletter(user.email)
}
}
// the function 'sendNewsletter' in
// this example would just take in
// an email address and then as an
// output send a newsletter to that
// address
어떻게 작동합니까? 함수가 for 루프에서 차례로 각 사용자에게 도달하면
user.email
속성을 부울 비교의 첫 번째 절반으로 사용합니다. Dr. Strange의 경우 코드는 null
값을 수집한 다음 부울 비교를 수행해야 한다는 것을 알고 null이 거짓 값이므로 유형을 false
로 강제 변환합니다.그런 다음 코드는 및 피연산자의 전반부가 거짓임을 알고 '단락'되어 후반부에 작성된 코드를 건너뛰고 즉시 거짓으로 평가됩니다.
반대로 토니가 함수를 돌릴 때
user.email
는 진실인 채워진 문자열입니다. 유형이 강제되면 코드가 true
비교의 나머지 절반을 보도록 강제하는 &&
가 됩니다. 그런 다음 sendNewsletter(user.email)
기능을 실행하여 Mr. Stark가 귀하의 모든 최신 뉴스를 파악하도록 합니다.여기까지입니다. 읽어 주셔서 감사합니다. 새로운 지식을 사용하여 이전보다 더 멋진 코드를 작성할 수 있기를 바랍니다. 그리고 당신이 나보다 더 많은 것을 알고 있고 내가 내 설명을 엉망으로 만들었다면 댓글을 달고 내가 <3 이전에 가질 수 있는 더 멋진 코드를 작성하도록 도와주세요. --xx키퍼
Reference
이 문제에 관하여(Javascript의 유형 강제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/xxkeefer/type-coercion-in-javascript-2450텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)