1. 비수체 유형에서 숫자 값
Number() 변환을 사용할 때 :
parseInt() 사용하여 변환 할 때 :
var num1 = parseint ( "10", 2); // 2 구문 분석 var num2 = parseint ( "10", 8); // 8 구문 분석 var num3 = parseint ( "10", 10); // 10 구문 분석 var num4 = parseint ( "10", 16); // 16 16 진수로 구문 분석
parseFloat() 변환을 사용할 때 :
parsefloat와 parseint의 첫 번째 차이점은 문자열을 구문 분석 할 때 유효하지 않은 부동 소수점 숫자가 발생한다는 것입니다.
16 진수 값을 구문 분석 할 때 0을 반환합니다
var num = parsefloat ( "0xa"); // 0var num = parseint ( "0xa"); // 10
parsefloat 함수에는 카디널리티를 지정하는 두 번째 매개 변수가 없으므로 소수점 값 만 구문 분석됩니다.
문자열이 정수 인 경우 플로팅 포인트 번호 대신 정수를 반환합니다.
var num = parseFloat("2.125e7"); //31250000
2. tostring ()을 사용하여 다른 자리의 값을 출력하십시오
이 막대는 정수에 적용되며 Tostring ()을 사용하여 모든 이진 형식으로 정수를 반환 할 수 있습니다.
var num = 10; alert (num.toString ()); //"10"Alert(num.tostring(9)); //"111"Alert(num.tostring(16)); //"에이"
3. 비트 연산자 일 때 NAN 및 Infinity에주의를 기울이십시오.
NAN 및 Infinity에 비트 연산자를 사용하면 두 값이 0으로 처리됩니다. 비트 연산자가 비수체 값에 적용되면 값은 숫자 () 함수를 사용하여 숫자 값으로 변환됩니다.
주목해야 할 또 다른 점은 부호가없는 마이너스의 오른쪽 이동과 서명되지 않은 오른쪽 교대는 부호 비트가있는 서명 된 오른쪽 시프트와 달리 빈 공간을 0으로 채우는 것입니다. 따라서 서명되지 않은 오른쪽 이동과 서명 된 양수의 오른쪽 이동은 동일하지만 음수 숫자는 다릅니다. 서명되지 않은 오른쪽 시프트 조작은 음의 이진 코드를 양의 이진 코드로 취급하고 음수 숫자는 보완 양식으로 표시되므로 서명되지 않은 오른쪽 전환의 결과가 매우 다릅니다.
var OldValue = -64; var newValue = OldValue >>> 5
4. 특수 수치 작업
수치 작업의 경우 NAN 인 피연산자가있는 경우 결과는 NAN입니다.
숫자가 아닌 값에 대해 하나의 첨가 또는 뺄셈 작업 (+,-,+또는 음수 부호)을 사용하십시오. 값을 숫자 값으로 변환 할 수없는 경우 (숫자 () 메소드를 사용하여 변환) NAN이 반환됩니다.
var s1 = "01", s2 = "1.1", s3 = "z", b = false, o = {valueof : function () {return -1;}}; s1 = +s1; // 1 + -: -1S2 = + S2로 변경; //1.1 -1.1S3 = +S3; // nan nanb = +b; // 0 0o = -O; //- 1 1무한대 및 0은 NAN과 동일하며, 멀티 플라이어의 부호에 따라 비 0이 무한대 및 인식력입니다. 무한대와 무한대는 무한대와 같습니다.
var num1 = 무한대, num2 = 0, num3 = -2, num4 = -infinity; 경고 (num1 * num2); // nanalert (num1 * num3); //-무한대 (Num1 * num4); //-무한대
0은 0으로 나뉘어지고 0이 아닌 숫자는 0으로 나뉘어져 있습니다. 무한대를 무한으로 Nan으로 나눈 값
모듈로 작동의 경우 다음 방정식이 다음과 같습니다.
무한대%2 = NAN; 2%-infinity = 2; 0%무한대 = 0; // divisor가 0 인 한, divisor는 NAN이 아니고 결과는 0infinity%0 = nan입니다. // divisor는 숫자가 될 수 있으며, divisor가 0 인 한 결과는 naninfinity%infinity = nan입니다.
추가 작업 : 두 피연산자가 문자열 인 경우 +는 문자열 연결이됩니다. 하나가 문자열이고 다른 하나는 숫자 값 인 경우 숫자 값을 문자열로 변환 한 다음 문자열을 연결하십시오. 피연산자가 물체 인 경우 부울 값은 먼저 자신의 가치를 호출합니다. 아무것도 없다면 Tostring 방법을 호출하십시오. 그런 다음 리턴 값 유형에 따라 + 부호가 문자열에 연결되어야하는지 또는 추가 해야하는지 결정하십시오.
인피니티 + -infinity = nan; var p = {valueof : function () {return -1; }}; var num = 1; var result = num +p; alert (결과); // 0 추가 var p = {valueof : function () {return "not a num"; }}; var num = 1; var result = num +p; alert (결과); // 1 NUM 문자열이 연결되지 않습니다빼기 작동 : 뺄셈 작업은 첨가 작업과 매우 유사하며 객체 처리는 동일하므로 더 이상 설명하지 않습니다.
인피니티 - 인피니티 = nan; -infinity- -infinity = nan;
5. 관계형 운영자 사용
관계형 운영자는 (<)보다 작고 (>)보다 크고 (<=)보다 작거나 같고 (> =)보다 크다.
하나의 값이있는 한, 수치 비교가 수행되고 다른 값은 숫자 값이 아니며 수치 값으로 변환됩니다. 객체에 먼저 가치를 사용한 다음 Tostring을 사용하십시오. 실제로, 객체가 수행하는 작업에 관계없이 이것은 사실입니다. 가치가있는 경우 가치가 값을 반환하는 데 사용됩니다. 그렇지 않으면 Tostring은 값을 반환하는 데 사용됩니다.
둘 다 문자열이며 문자열의 문자 인코딩 값 (ASCII 값)을 비교합니다.
첫 번째와 관련하여 문자열이 숫자 값 일 때 문자열을 숫자 값으로 변환 할 수 없을 때 다음 상황은 NAN으로 발생합니다.
var result = "a"<3; // false a 변환 a a로 nanvar result = "a"> = 3; // nan과 비교하여 숫자는 false입니다
6. == 및 ===
JavaScript에서, 방정식의 양면에 다른 유형이 있거나 하나의 객체 만 포함되면 비교는 두 가지 상황으로 나뉘며 변환 후 비교는 변환이없는 것과 직접 비교됩니다. ==는 먼저 변환하고 비교하는 것입니다. ===는 변환하지 않고 직접 비교하는 것입니다. === 유형이 같지 않은 한 False를 반환합니다. ==, 그것은 다음 상황으로 나뉩니다.
True는 1으로 변환되고 False는 0으로 변환됩니다.
문자열을 숫자 값과 비교하면 문자열이 숫자 값으로 변환됩니다.
방정식의 양쪽에 객체가 하나만 있으면이 객체는 valueof의 메소드없이 Tostring 메소드를 호출하는 것과 같은 기본 유형을 가져 오기 위해 ValueOf를 호출합니다. 양쪽이 물체라면 변환이 수행되지 않습니다.
var p = { "name": "a"}; var q = { "name": "a"} var o = p; alert (q == p); // 객체의 내용이 동일한 경고 (o == p)이지만, 객체의 주소는 다릅니다. //진실특별 비교는 다음과 같습니다
null == undefined // truenan! = nan // truenan == nan // false "nan"== nan // falseUndefined == 0 // falsenull == 0 // false
7. 진술을 위해
for-in 문의 출력 순서는 예측할 수 없으며 주문은 브라우저에 따라 다를 수 있습니다.
반복하는 변수가 널 또는 정의되지 않은 경우 ECMAScript 5에 오류가 더 이상 던져지지 않지만 루프 본체는 실행되지 않습니다. 앞으로의 호환성을 원한다면 루프 전에 무효가 없거나 정의되지 않았다고 판단합니다.
8. SWETHC 진술
스위치는 모든 데이터 유형을 사용할 수 있습니다.
사례의 값은 상수, 변수 및 표현 일 수 있습니다.
스위치 명령문은 값을 비교할 때 합동 비교 연산자 (===)를 사용합니다.
var num = 25; switch (true) {case num <0 : alert ( "Less 0"); 부서지다; CASE NUM> = 0 : ALERT ( "0 이상"); 부서지다; 기본값 : Alert ( "오류");}9 기능 사용
함수에 반환 명령문이 없거나 return 값이 없으면 반환 값이 없으면 함수가 정의되지 않은 반환됩니다.
함수의 정의는 함수를 호출 할 때 함수의 매개 변수와 일치하지 않습니다. 다시 말해, 두 매개 변수 (공식 매개 변수 및 실제 매개 변수)는 연결되지 않습니다. 함수를 정의 할 때 제공되는 변수는 사용하기에 더 편리합니다. 정의되지 않더라도 함수로 전달 된 매개 변수는 (인수를 통해) 얻을 수 있습니다.
함수 Howmanyargs () {alert (arguments.length);} Howmanyargs ( "a"); // 1howmanyargs ( "a", "b"); // 2howmanyargs (); // 0공식적인 매개 변수와 인수 사이의 관계는 다음과 같습니다.
기능 Howmanyargs (SS) {인수 [0] = "테스트"; 인수 [1] = "test2"Alert (인수 [0]); // 테스트 경고 (인수 [1]); // test2 alert (ss); // test} Howmanyargs ( "a"); 기능 Howmanyargs (SS) { "Strict"Arguments [0] = "test"; 인수 [1] = "test2"alert (인수 [0]); // testalert (인수 [1]); // test2alert (ss); // a} Howmanyargs ( "a");10. 기능 매개 변수 사용
함수를 정의 할 때 사용 된 매개 변수를 함수의 괄호 안에 쓰지 만 여러 옵션 매개 변수가있을 때 충분히 융통성이 없습니다. 현재 객체를 사용하여 여러 옵션 매개 변수를 캡슐화 할 수 있습니다.
함수 displayInfo (args) {var output = ""; if (typeof args.name == "string") {output + = "name :" + args.name + "/n"; } if (typeof args.age == "number") {output + = "age :"args.age + "/n"; } 경고 (출력); } displayInfo ({이름 : "Nicholas", Age : 29}); displayInfo ({이름 : "Greg"});