수색…


비고

일부 언어에서는 선언 할 변수의 종류를 미리 정의해야합니다. JavaScript는 그렇게하지 않습니다. 그것은 스스로 알아 내려고 노력할 것입니다. 경우에 따라 예기치 않은 동작이 발생할 수 있습니다.

다음 HTML을 사용하는 경우

<span id="freezing-point">0</span>

JS를 통해 콘텐츠를 검색하면 예상 할 수있는 것처럼 숫자로 변환 되지 않습니다 . 다음 스 니펫을 사용하면 boilingPoint100 이 될 것으로 예상 할 수 있습니다. 그러나 JavaScript는 moreHeat 를 문자열로 변환하고 두 문자열을 연결합니다. 결과는 0100 됩니다.

var el = document.getElementById('freezing-point');
var freezingPoint = el.textContent || el.innerText;
var moreHeat = 100;
var boilingPoint = freezingPoint + moreHeat;

freezingPoint 를 명시 적으로 숫자로 변환하여이 문제를 해결할 수 있습니다.

var el = document.getElementById('freezing-point');
var freezingPoint = Number(el.textContent || el.innerText);
var boilingPoint = freezingPoint + moreHeat;

첫 번째 행에서는 "0" (문자열)을 0 (숫자)으로 변환하여 저장합니다. 추가 작업을 수행 한 후 예상 결과 ( 100 )를 얻습니다.

문자열을 숫자로 변환

Number('0') === 0

Number('0') 는 문자열 ( '0' )을 숫자 ( 0 )로 변환합니다.

더 짧지 만 덜 명확한 형식 :

+'0' === 0

단항 + 연산자는 숫자에는 아무런 영향을주지 않지만 다른 것은 숫자로 변환합니다.
흥미롭게도, +(-12) === -12 .

parseInt('0', 10) === 0

parseInt('0', 10) 는 문자열 ( '0' )을 숫자 ( 0 )로 변환하고 두 번째 인수 인 기수를 잊지 않습니다. 지정되어 있지 않은 경우, parseInt는 string를 잘못된 번호로 변환 할 수 있습니다.

숫자를 문자열로 변환하기

String(0) === '0'

String(0) 은 숫자 ( 0 )을 문자열 ( '0' )로 변환합니다.

더 짧지 만 덜 명확한 형식 :

'' + 0 === '0'

이중 부정 (!! x)

이중 부정 !! 별개의 JavaScript 연산자 나 특수 구문이 아니라 오히려 두 번의 부정의 순서입니다. 그것의 적절한 모든 유형의 값을 변환하는 데 사용됩니다 true 또는 falsetruthy 또는 falsy 여부에 따라 부울 값입니다.

!!1            // true
!!0            // false
!!undefined    // false
!!{}           // true
!![]           // true

첫 번째 부정은 어떤 값으로 변환 falsetruthy하고있는 경우 true falsy 경우. 그런 다음 두 번째 부정은 정상 부울 값에서 작동합니다. 이들은 어떤 truthy 값으로 변환 true 과 어떤 falsyfalse .

그러나 많은 전문가들은 그러한 구문을 사용할 수없는 관행을 받아 들일 수 없다고 생각하고 작성하는 데 더 오래 걸리더라도 대안을 읽는 것이 더 간단하다고 권장합니다.

x !== 0        // instead of !!x in case x is a number
x != null      // instead of !!x in case x is an object, a string, or an undefined

!!x 사용은 다음과 같은 이유로 인해 빈약 한 것으로 간주됩니다.

  1. 문법적으로는 뚜렷한 특수 구문처럼 보일 수 있지만 암묵적인 형식 변환에서는 두 번의 연속 된 부정을 제외하고는 아무 것도하지 않습니다.
  2. 코드를 통해 변수 및 속성에 저장된 값 유형에 대한 정보를 제공하는 것이 좋습니다. 예를 들어, x !== 0x 가 아마 숫자라고 말하면서 !!x 는 코드의 독자에게 그런 이점을 전가하지 않습니다.
  3. Boolean(x) 사용은 유사한 기능을 허용하며 유형의보다 명시적인 변환입니다.

암시 적 변환

JavaScript는 사용시 자동으로 변수를보다 적합한 유형으로 변환하려고합니다. 일반적으로 전환을 명시 적으로 수행하는 것이 좋습니다 (다른 예 참조).하지만 전환이 암시 적으로 발생하는 것을 알아야합니다.

"1" + 5 === "15" // 5 got converted to string.
1 + "5" === "15" // 1 got converted to string.
1 - "5" === -4 // "5" got converted to a number.
alert({}) // alerts "[object Object]", {} got converted to string.
!0 === true // 0 got converted to boolean
if ("hello") {} // runs, "hello" got converted to boolean.
new Array(3) === ",,"; // Return true. The array is converted to string - Array.toString();

더 까다로운 부분 중 일부는 다음과 같습니다.

!"0" === false // "0" got converted to true, then reversed.
!"false" === false // "false" converted to true, then reversed.

숫자를 부울로 변환

Boolean(0) === false

Boolean(0) 은 숫자 0 을 부울 false 로 변환합니다.

더 짧지 만 덜 명확한 형식 :

!!0 === false

문자열을 부울로 변환

문자열을 부울로 변환하려면 use

Boolean(myString)

또는 짧지 만 덜 명확한 형태

!!myString 

빈 문자열 (길이가 0 인 문자열)을 제외한 모든 문자열은 부울 값으로 true 로 평가됩니다.

Boolean('') === false   // is true
Boolean("") === false   // is true
Boolean('0') === false  // is false
Boolean('any_nonempty_string') === true // is true

부동 소수점에 대한 정수

JavaScript에서는 모든 숫자가 내부적으로 수레로 표시됩니다. 즉, 정수를 부동 소수점으로 사용하는 것만으로 변환 할 수 있습니다.

정수로 플로트

부동 소수점을 정수로 변환하기 위해 JavaScript는 여러 가지 방법을 제공합니다.

floor 함수는 float보다 작거나 같은 첫 번째 정수를 반환합니다.

Math.floor(5.7); // 5

ceil 함수는 float보다 크거나 같은 첫 번째 정수를 반환합니다.

Math.ceil(5.3); // 6

round 함수는 float을 반올림합니다.

Math.round(3.2); // 3
Math.round(3.6); // 4
6

잘림 ( trunc ) 플로트에서 소수를 제거합니다.

Math.trunc(3.7); // 3

절단 (사이의 차이에 주목 trunc ) 및 floor :

Math.floor(-3.1); // -4
Math.trunc(-3.1); // -3

문자열을 float로 변환하십시오.

parseFloat 는 문자열을 인수로 받아 들여 float /

parseFloat("10.01") // = 10.01

부울로 변환

Boolean(...) 은 모든 데이터 유형을 true 또는 false 로 변환합니다.

Boolean("true") === true
Boolean("false") === true
Boolean(-1) === true
Boolean(1) === true
Boolean(0) === false
Boolean("") === false
Boolean("1") === true
Boolean("0") === true
Boolean({}) === true
Boolean([]) === true

빈 문자열과 숫자 0은 false로 변환되고 다른 모든 문자열은 true로 변환됩니다.

더 짧지 만 덜 명확한 형식 :

!!"true" === true
!!"false" === true
!!-1 === true
!!1 === true
!!0 === false
!!"" === false
!!"1" === true
!!"0" === true
!!{} === true
!![] === true

이 짧은 형식은 논리적 NOT 연산자를 두 번 사용하는 암시 적 유형 변환을 활용합니다 ( http://www.riptutorial.com/javascript/example/3047/double-negation#x-


다음은 ECMAScript 사양 의 부울 변환의 전체 목록입니다.

  • 만약 myArg 타입 undefined 또는 null 다음 Boolean(myArg) === false
  • 만약 myArg 형의 boolean 다음 Boolean(myArg) === myArg
  • myArgnumber 유형이면 Boolean(myArg) === false myArg+0 , ‑0 또는 NaN 이면 Boolean(myArg) === false . 그렇지 않으면 true
  • 만약 stringmyArg 라면 Boolean(myArg) === false myArg 가 빈 문자열이면 (길이는 0입니다.); 그렇지 않으면 true
  • symbol 또는 object 유형의 myArg 다음 Boolean(myArg) === true

부울로 false 으로 변환되는 값은 false 이라고 불 립니다 (그리고 다른 모든 것은 진실 이라고 합니다 ). 비교 연산을 참조하십시오.

배열을 문자열로 변환

Array.join(separator) 은 구성 가능한 구분 기호와 함께 배열을 문자열로 출력하는 데 사용할 수 있습니다.

기본값 (separator = ",") :

["a", "b", "c"].join() === "a,b,c"

문자열 분리 기호 사용 :

[1, 2, 3, 4].join(" + ") === "1 + 2 + 3 + 4"

공백 구분 기호 사용 :

["B", "o", "b"].join("") === "Bob"

배열 메서드를 사용하여 문자열에 배열

이 방법은 익명의 함수를 사용하여 join ()으로 할 수있는 일을 성취하기 때문에 사용자가 될 수 있습니다. 그러나 배열을 문자열로 변환하는 동안 문자열에 무언가를 만들어야하는 경우 유용 할 수 있습니다.

var  arr = ['a', 'á', 'b', 'c']

function upper_lower (a, b, i) {
  //...do something here
  b = i & 1 ? b.toUpperCase() : b.toLowerCase();
  return a + ',' + b
}
arr = arr.reduce(upper_lower); // "a,Á,b,C"

원시 기본 변환 테이블

문자열로 변환 됨 숫자로 변환 됨 부울로 변환
정의되지 않은 "정의되지 않음" NaN 그릇된
없는 "없는" 0 그릇된
참된 "참된" 1
그릇된 "그릇된" 0
NaN "NaN" 그릇된
빈 문자열 0 그릇된
"" 0 참된
"2.4"(숫자) 2.4 참된
"테스트"(숫자가 아님) NaN 참된
"0" 0 참된
"1" 1 참된
-0 "0" 그릇된
0 "0" 그릇된
1 "1" 참된
무한대 "무한대" 참된
-무한대 "-무한대" 참된
[] "" 0 참된
[삼] "삼" 참된
['에이'] "에이" NaN 참된
[ 'a', 'b'] "a, b" NaN 참된
{} "[object Object]" NaN 참된
기능(){} "기능(){}" NaN 참된

굵게 표시된 값은 프로그래머가 놀라는 것을 알 수있는 변환을 강조합니다.

명시 적 값을 변환하려면 String ()을 사용할 수 있습니다. Number () Boolean ()



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow