JavaScript の使用に関する誤解
この章では、JavaScript の使用における誤解について説明します。
String replace
文字列内の特定の文字を置き換えるには、string の replace メソッドをよく使います
string.replace(subStr/reg,replaceStr/function)
1 つ。パラメータは検索する文字列または正規表現で、2 番目のパラメータは置換する文字列またはメソッドです
"I'm Byron".replace("B", "b") / を使用できます。 / 私はバイロンです
は私たちが考えていたものと同じですが、
「私は学生ですが、あなたは?」.replace("n","N") // 私は学生です、あなたは?
予想とは異なり、2 番目の「n」は置換されませんでした。文字列が文字列の replace メソッドの最初の引数として渡された場合、最初に一致した項目のみが置換されます。すべての一致を置き換える場合は、RegExp オブジェクトを渡し、そのグローバル プロパティを指定する必要があります。
「私は学生です、そしてあなたは?」.replace(/n/g,"N") // 私は学生です、そしてあなたは?
typeof
typeof について最もよくある誤解は、typeof は関数ではなく演算子であるということです。つまり、変数の型を判断するときに括弧を追加する必要はなく、直接使用することができます
typeof 1; //numbertypeof( 1); //number、このように記述する必要はありませんが、これは変数または定数をラップするのと同じです。ほとんどの場合、typeof の戻り値は文字列です。返される結果は予期した結果と同じです。ただし、JavaScript には数値、文字列、null、未定義などのいくつかの基本的な型があることがわかっています。次に、いくつかの例を見てみましょう。
typeof 123; //number
typeof "123" //string
typeof false;定義済み
typeof null //object
typeof new Array(); //object
typeof (new Array()); //十分に明確でない場合は、次のように使用できます。 、結果は同じです
typeof (function(){}); //function
typeof a; //unknown
1を返します。 2. NaN は数値ではないことを意味しますが、typeof は数値を返します 3. "123" は文字列になるので、文字列が返されます 4. false の型は boolean です 5。未定義の場合、この Type 変数はリテラル値「unknown」を 1 つだけ持つことができます 6。null の型は null ではなく、オブジェクトであるため、typeof が null のみを返すことを期待できません 7。オブジェクトであると判断された場合は、特定の型の Array や Date を返しません 9。 Function もオブジェクトの型であり、直接 object を返す必要があります。しかし、typeof はそれを別の方法で扱い、関数を返すことができます 10。未定義の変数も JavaScript の If IF では unknown を返します。ブール値だけで true か false を判断するのではなく、0、nan、""、""、unknown、null、false は false とみなされます If (! False) { console.log (1); if (!"") { console.log(3 }; しかし、これはこれらの値が true であることを意味するわけではありません 0==false; //true "0"==false; //これも true です 未定義== false //false null==false //false null==null //true NaN==NaN //false null==未定義 //true 代入演算子の適用エラー JavaScript プログラムでは、if 条件文で代入演算子の等号 (=) を使用すると、間違った結果が生成されます。比較演算子の 2 つの等号を使用するのが正しい方法です。 ( ==)。 x が 10 に等しくないため、if 条件ステートメントが false (これは予想どおりです) を返します: 比較演算子の一般的なエラー 厳密な比較演算では、 === が恒等演算子であり、チェックされます式の値と型、次の if 条件文は false を返します: この種のエラーは、比較に恒等演算子 (===) を使用する switch 文でよく発生します 次の例型の不一致が原因です。 アラート ポップアップ ウィンドウは実行されません: 加算と接続に関する注意事項 加算とは 2 つの数値を加算することです。 連結とは、2 つの文字列を連結することです。 JavaScript では、加算と連結の両方に + 演算子を使用します。 次に、例を通して 2 つの数値の加算と数値と文字列の連結の違いを確認します。 var x = 10 + 5; // x の結果は 15 浮動小数点データ使用上の注意 JavaScriptのすべてのデータは64ビット浮動小数点データ(float)として保存されます。 JavaScript を含むすべてのプログラミング言語は、浮動小数点データの精度を判断することが困難です: var x = 0.1; Returnステートメントの使用上の注意 JavaScriptは、デフォルトではコードの最終行で自動的に終了します。 次の結果の例では、未定義が返されます: なぜそのような結果があるのですか? JavaScript では、例 4 のコードは次のコードと一致しているためです。 function myFunction(a) { 次のような不完全なステートメントの場合は を解析します: var JavaScript はステートメントの 2 行目を読み取ろうとします: power = 10; But because A次のようなステートメントが完了します: return JavaScript はステートメントを自動的に閉じます: return; JavaScript では、セミコロンはオプションです。 return は完全なステートメントであるため、JavaScript は return ステートメントを閉じます。 配列のインデックスに名前を使用する 多くのプログラミング言語では、配列のインデックスとして名前を使用できます。 名前をインデックスとして使用する配列は、連想配列 (またはハッシュ) と呼ばれます。 JavaScript は配列のインデックスに名前を使用することをサポートしていません。数値インデックスのみが許可されます。 var person = []; JavaScript では、オブジェクトは名前をインデックスとして使用します。 名前をインデックスとして使用すると、JavaScript は配列にアクセスするときに配列を標準オブジェクトとして再定義します。 この操作を実行すると、配列のメソッドとプロパティは使用されなくなります。使用しないと、エラーが発生します: var person = []; 配列要素を定義します。最後にカンマを追加できません 間違った定義方法: points = [40, 100, 1, 5, 25, 10,]; 正しい定義方法: points = [40, 100, 1, 5, 25, 10]; オブジェクトを定義します。最後にカンマを追加することはできません 間違った定義方法: websites = {site :"php中文网", url:"www.php.cn", like:460,} 正しい定義: websites = {site: "php中文网"、URL:"www.php.cn"、いいね:460} 未定義は Null ではありません JavaScript では、null はオブジェクトに使用され、未定義は変数、プロパティ、メソッドに使用されます。 オブジェクトは、定義されている場合にのみ null にすることができ、それ以外の場合は未定義になります。 オブジェクトが存在するかどうかをテストしたい場合、オブジェクトがまだ定義されていない場合はエラーがスローされます。 間違った使用方法: if (myObj !== null && typeof myObj !== "unknown") 正しい方法は、オブジェクトが定義されているかどうかを検出するために最初に 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>
var x = 0;
document.getElementById("demo").innerHTML = Boolean(x == 10);
</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;
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>
var x = 10 + "5"; xの結果は「105」です
var y = 0.2;
var z = x + y // z の結果は 0.3 です。
if (z == 0.3) //Return false<!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>
var
power = 10;
return; // セミコロンで終了し、未定義を返します
a * power;
}
person[0] = "ジョン";
person[1] = "Doe";
person[2] = 46;
var x = person.length return; 3
var y = person[0]; // person[0] は "John" を返します
person["firstName"] = "John";
person[ "lastName"] = "Doe";
person["age"] = 46;
var x = person.length; // person.length は 0 を返します
var y = person[0] を返します。未定義