JavaScript 사용법에 대한 오해

이 장에서는 JavaScript 사용에 대한 오해에 대해 논의합니다.

문자열 바꾸기

문자열의 특정 문자를 바꾸기 위해 문자열의 바꾸기 메소드를 자주 사용합니다. 구문은 다음과 같습니다.

string.replace(subStr/reg,replaceStr/function)

하나 매개변수는 찾을 문자열 또는 정규식이고 두 번째 매개변수는 대체할 문자열 또는 메소드입니다.

"I'm Byron".replace("B", "b") /를 사용할 수 있습니다. / I'm byron

생각과 똑같지만

"나는 학생인데 당신은?".replace("n","N") //나는 학생입니다. , and you?

우리가 예상했던 것과는 달리 두 번째 'n'은 대체되지 않았습니다. 문자열이 문자열의 교체 메소드에 대한 첫 번째 인수로 전달되면 첫 번째로 일치하는 항목만 교체됩니다. 일치하는 항목을 모두 바꾸려면 RegExp 개체를 전달하고 해당 전역 속성을 지정해야 합니다.

"나는 학생인데 너는?".replace(/n/g,"N") // 나도 학생이고 너는?


typeof

typeof에 대한 가장 흔한 오해는 typeof가 함수가 아니라 연산자라는 것입니다. 즉, 변수의 유형을 판단할 때 괄호를 추가할 필요가 없으며 그냥 직접 사용할 수 있다는 뜻입니다

typeof 1; //numbertypeof( 1); //number, 이렇게 작성할 필요는 없지만 맞습니다. 대부분의 경우 typeof의 반환 값은 문자열입니다. 반환된 결과는 예상 결과와 동일합니다. 하지만 몇 가지 참고할 사항이 있습니다. JavaScript에는 숫자, 문자열, 부울, 정의되지 않음 및 객체 등 여러 가지 기본 유형이 있다는 것을 알고 있습니다.

typeof 123; //숫자

typeof NaN //숫자

typeof "123" //string

typeof false; //boolean

typeof 정의되지 않음;

typeof null //object

typeof new Array(); //object

typeof (new Array()); //명확하지 않다고 생각되면 이렇게 사용하면 됩니다. , 결과는 동일합니다

typeof (function(){}) / /function

typeof a; //undefine

1은 숫자이며 숫자를 반환합니다

2. NaN은 숫자가 아니라는 뜻이지만 typeof는 여전히 숫자를 반환합니다

3. "123"은 문자열이 되므로 문자열이 반환됩니다.

4. false 유형은 boolean

5입니다. 정의되지 않은 경우 이 유형 변수는 "정의되지 않은" 리터럴 값 하나만 가질 수 있습니다

6. null 유형은 null이 아니라 객체이므로 typeof가 null

7을 판단하는 데 도움이 되기를 바라지 않습니다. 객체 객체로 판단되어 특정 유형의 Array 또는 Date

를 반환하지 않는 경우9. 함수도 객체 유형이므로 객체를 직접 반환해야 합니다. 그러나 typeof는 이를 다르게 처리하고 함수를 반환합니다

10. 정의되지 않은 변수는 javascript에서 undefine


if 및 ==

을 반환합니다. Boolean이 true 또는 false를 결정하는 것뿐만 아니라 0, Nan, "", Undefine, NULL, FALSE는 모두 false로 간주됩니다

(! False) {

console.log (1)

(!"") {

              console.log(3 };

                                                              콘솔                             123456이 콘솔에 인쇄됩니다

그러나 이는 이러한 값이 ​​==false

0==false; //true

"0"==false; //true, 이것도 true라는 의미는 아닙니다. = false //false

null==false //false

null==null //true

NaN==NaN //false

null==정의되지 않음 //true

대입 연산자 적용 오류

JavaScript 프로그램에서 if 조건문에 대입 연산자의 등호(=)를 사용하면 잘못된 결과가 생성됩니다. 올바른 방법은 비교 연산자의 등호 두 개를 사용하는 것입니다. ( ==).

x가 10이 아니기 때문에 조건문이 false를 반환하는 경우(예상한 대로):

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>
<p id="demo"></p>
<script>
var x = 0;
document.getElementById("demo").innerHTML = Boolean(x == 10);
</script>
</body>
</html>


비교 연산자의 일반적인 오류

엄격한 비교 연산에서 ===는 항등 연산자이며 확인됩니다. 동시에 표현식의 값과 유형에 대해 다음 if 조건문은 false를 반환합니다.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>
<p id="demo"></p>
<script>
var x = 10;
var y = "10";
document.getElementById("demo").innerHTML = Boolean(x === y);
</script>
</body>
</html>

이런 종류의 오류는 비교를 위해 항등 연산자(===)를 사용하는 스위치 문에서 자주 발생합니다

다음 예 불일치 유형으로 인해 경고 팝업창이 실행되지 않습니다:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>
<p id="demo"></p>
<script>
var x = 10;
switch(x) {
    case "10": alert("Hello");
}
</script>
</body>
</html>


덧셈과 연결에 관한 주의사항

덧셈은 두 개의 숫자를 더하는 것입니다.

연결은 두 문자열을 연결하는 것입니다.

JavaScript는 더하기와 연결 모두에 + 연산자를 사용합니다.

다음으로 예제를 통해 두 숫자를 더하는 것과 숫자와 문자열을 연결하는 것의 차이점을 볼 수 있습니다.

var x = 10 + 5 // x의 결과는 15
var x = 10 + "5" // x의 결과는 "105"입니다



부동소수점 데이터 사용 시 주의사항

JavaScript의 모든 데이터는 64비트 부동소수점 데이터(float)로 저장됩니다.

JavaScript를 포함한 모든 프로그래밍 언어는 부동 소수점 데이터의 정확성을 결정하기 어렵습니다.

var x = 0.1;
var y = 0.2;
var z = x + y // z의 결과는 0.3입니다.
if (z == 0.3) //Return false


Return 문 사용 시 주의사항

JavaScript는 기본적으로 코드의 마지막 줄에서 자동으로 종료됩니다.

다음 예시 결과는 정의되지 않은 결과를 반환합니다.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = myFunction(55);
function myFunction(a) {
    var
    power = 10;
    return
    a * power;
}
</script>
</body>
</html>

왜 그런 결과가 있나요? 왜냐하면 JavaScript에서는 예제 4의 코드가 다음 코드와 일치하기 때문입니다.

function myFunction(a) {
var
power = 10;
return; // 세미콜론으로 끝나고 undefine
a * power;
}을 반환합니다.

parse

다음과 같이 불완전한 문인 경우:

var

JavaScript는 문의 두 번째 줄을 읽으려고 시도합니다.

power = 10;

그러나 A부터 다음과 같은 문이 완성되었습니다.

return

JavaScript는 자동으로 문을 닫습니다.

return;

JavaScript에서 세미콜론은 선택 사항입니다.

return은 완전한 문이므로 JavaScript는 return 문을 닫습니다.


이름을 사용하여 배열의 색인 생성

많은 프로그래밍 언어에서는 이름을 배열의 색인으로 사용할 수 있습니다.

이름을 인덱스로 사용하는 배열을 연관 배열(또는 해시)이라고 합니다.

JavaScript는 배열 색인에 이름을 사용하는 것을 지원하지 않으며 숫자 색인만 허용됩니다.

var person = [];
person[0] = "John";
person[1] = "Doe";
person[2] = 46;
var x = person.length return; 3
var y = person[0]; // person[0]은 "John"을 반환합니다


JavaScript에서 객체는 이름을 인덱스로 사용합니다.

이름을 인덱스로 사용하면 JavaScript는 배열에 액세스할 때 배열을 표준 개체로 재정의합니다.

이 작업을 수행한 후에는 배열의 메서드와 속성이 더 이상 사용되지 않습니다. 그렇지 않으면 오류가 발생합니다:

var person = [];
person["firstName"] = "John";
person[ "lastName"] = "Doe";
person["age"] = 46;
var x = person.length;


배열 요소를 정의하세요. 끝에 쉼표를 추가할 수 없습니다.


잘못됨 정의 방법:

포인트 = [40, 100, 1, 5, 25, 10,];

올바른 정의 방법:

포인트 = [40, 100, 1, 5, 25, 10 ];


객체를 정의하세요. 끝에 쉼표를 추가할 수 없습니다.
잘못된 정의 방법:

websites = {site:"php中文网", url:"www.php .cn", like:460,}

올바른 정의:

websites = {site:"php中文网", url:"www.php.cn", like:460}


정의되지 않은 것은 Null이 아닙니다

JavaScript에서는 객체에 null이 사용되고 변수, 속성 및 메서드에 정의되지 않은 것이 사용됩니다.

객체는 정의된 경우에만 null일 수 있으며, 그렇지 않으면 정의되지 않습니다.

객체가 존재하는지 테스트하려는 경우 객체가 아직 정의되지 않으면 오류가 발생합니다.

잘못된 사용 방법:

if (myObj !== null && typeof myObj !== "undefine")

올바른 방법은 객체가 정의되었는지 감지하기 위해 먼저 typeof를 사용해야 한다는 것입니다. :

if (myObj 유형 !== "정의되지 않음" && myObj !== null)



지속적인 학습
||
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = myFunction(55); function myFunction(a) { var power = 10; return a * power; } </script> </body> </html>
  • 코스 추천
  • 코스웨어 다운로드
현재 코스웨어를 다운로드할 수 없습니다. 현재 직원들이 정리하고 있습니다. 앞으로도 본 강좌에 많은 관심 부탁드립니다~