1。数値から数値への非数値
Number()変換を使用する場合:
parseInt()を使用して変換する場合:
var num1 = parseint( "10"、2); // 2 Parse var num2 = parseint( "10"、8); // 8 Parse var num3 = parseint( "10"、10); // 10 Parse var num4 = parseint( "10"、16); // 16六分位でのパース
parseFloat()変換を使用する場合:
ParsefloatとParseintの最初の違いは、文字列を解析するときに無効な浮動小数点数値文字に遭遇することです。これはParseint以上のものです。
16進値を解析するときに0を返します
var num = parsefloat( "0xa"); // 0var num = parseint( "0xa"); // 10
Parsefloat関数には、カーディナリティを指定する2番目のパラメーターはないため、小数値のみが解析されます。
文字列が整数の場合、浮動小数点数の代わりに整数を返します
var num = parseFloat("2.125e7"); //31250000
2。ToString()を使用して、異なる数字で値を出力します
このバーは整数に適用され、ToString()を使用して任意のバイナリ形式で整数を返すことができます。
var num = 10; alert(num.tostring()); //"10" lert(num.tostring(9)); //"11"alert(num.tostring(16)); //「A」
3.ビット演算子の場合、ナンとインフィニティに注意を払ってください
NANと無限にビット演算子を使用する場合、両方の値は0として扱われます。ビット演算子が非数値値に適用されると、値は数値()関数を使用して数値に変換されます。
注意すべきもう1つのことは、署名されていない正しいシフトの署名されていない正しいシフトが0で空間を埋めることであるということです。したがって、署名された右シフトとは異なり、署名されていない右シフトと署名された正しいシフトの正のシフトは同じですが、負の数は異なります。署名されていない右シフト操作は、負のバイナリコードを正のバイナリコードとして扱い、負の数は補体形式で表され、署名されていない右シフトの結果が非常に異なります。
var oldvalue = -64; var newValue = OldValue >>> 5
4。特別な数値操作
数値操作の場合、NANであるオペランドがある場合、結果はNANです。
非数値値には、1対1の追加または減算操作(+、 - 、プラスまたはネガティブサイン)を使用します。値を数値に変換できない場合(number()メソッドを使用して変換)、NANが返されます。
var s1 = "01"、s2 = "1.1"、s3 = "z"、b = false、o = {valueof:function(){return -1;}}; s1 = +s1; // 1 + toへの変更 - :-1S2 = + s2; //1.1 -1.1S3 = +S3; // nan nanb = +b; // 0 0o = -o; // -1 1Infinityと0の乗算はNANに等しく、乗数の符号に応じて、非0は無限とインフィニティです。 InfinityとInfinityの乗算は無限に等しくなります。
var num1 = infinity、num2 = 0、num3 = -2、num4 = -infinity; alert(num1 * num2); // nanalert(num1 * num3); // -InfinityLert(num1 * num4); //-無限
ゼロはゼロに分割され、nanであり、ゼロ以外の数値をゼロで割って無限またはインフィニティです。インフィニティはナンとして無限で分割されました
Modulo操作の場合、次の方程式が保持されます。
Infinity%2 = nan; 2%-Infinity = 2; 0%無限= 0; //除数が0である限り、除数はnanではありません、結果は0infinity%0 = nanです。 //除数は任意の数字であり、除数が0である限り、結果はnaninfinity%infinity = nanになります
追加操作:両方のオペランドが文字列である場合、 +は文字列の連結になります。 1つが文字列であり、もう1つが数値の場合、数値を文字列に変換してから、文字列を連結します。オペランドがオブジェクトである場合、ブール値は最初にそれらの値を呼び出します。何もない場合は、ToStringメソッドを呼び出します。次に、戻り値のタイプに基づいて、 +記号を文字列に接続するか、追加するかを決定します。
Infinity + -Infinity = nan; var p = {valueof:function(){return -1; }}; var num = 1; var result = num +p; alert(result); // 0 var p = {valueof:function(){return "not a num"; }}; var num = 1; var result = num +p; alert(result); // 1not num string concatenation減算操作:減算操作は追加操作に非常に似ており、オブジェクトの処理は同じであるため、もう説明しません。
Infinity -Infinity = nan; -infinity -infinity = nan;
5。リレーショナル演算子の使用
リレーショナル演算子は(<)、(>)よりも大きく、(<=)よりも少なく、(> =)以上です
1つの値がある限り、数値比較が実行され、もう1つは数値値ではなく、数値に変換されます。最初にオブジェクトにValueofを使用してから、ToStringを使用します。実際、オブジェクトがどのような操作を実行しても、これは真です。 ValueOFがある場合、ValueOFは値を返すために使用されます。そうしないと、ToStringが値を返すために使用されます。
どちらも文字列であり、文字列の値をエンコードする文字を比較します(ASCII値)
最初の点に関しては、文字列が数値である場合、文字列を数値に変換できない場合、次の状況がNANとして発生することに注意する必要があります。
var result = "a" <3; // false aはaをnanvar result = "a"> = 3に変換します。 // fals nanと比較した任意の数はfalseです
6。==および===
JavaScriptでは、方程式の2つの側面が異なるタイプの場合、または1つのオブジェクトのみが含まれている場合、比較は2つの状況に分割され、変換後の比較は変換なしと直接比較されます。 ==最初に変換して比較することです。===は、変換せずに直接比較します。 ===、タイプが等しくない限り、falseを返します。 ==、それは次の状況に分かれています。
trueは1に変換され、falseは0に変換されます。
文字列を数値と比較すると、文字列は数値に変換されます。
方程式の両側にオブジェクトが1つしかない場合、このオブジェクトはValueのValueを呼び出して、ToStringメソッドを呼び出すなど、基本的なタイプを取得します。両側がオブジェクトである場合、変換は行われません。
var p = {"name": "a"}; var q = {"name": "a"} var o = p; alert(q == p); // false pとqで指摘されたオブジェクトのアドレスは異なりますが、オブジェクトの内容は同じアラート(o == p)です。 //真実これが特別な比較です
null == undefined // truenan!= nan // truenan == nan // false "nan" == nan // falseUndefined == 0 // falsenull == 0 // false
7
forinステートメントの出力順序は予測不可能であり、順序はブラウザによって異なる場合があります。
反復する変数がNULLまたは未定義でない場合、エラーはECMAScript 5の下ではスローされなくなりますが、ループ本体は実行されません。フォワードの互換性が必要な場合は、ループの前にnullまたは未定義ではないと判断します。
8。SWETHCステートメント
スイッチは任意のデータ型を使用できます。
ケースの値は、一定、変数、および式である場合があります。
スイッチステートメントは、値を比較するときに合同比較演算子(===)を使用します。
var num = 25; switch(true){case num <0:alert( "less w");壊す; case num> = 0:alert( "0以上");壊す;デフォルト:alert( "error");}9関数の使用
関数または戻り値に戻りステートメントがない場合、返品値がない場合、関数は未定義に戻ります。
関数の定義は、それを呼び出すときの関数のパラメーターと一致していません。言い換えれば、2つのパラメーター(正式なパラメーターと実際のパラメーター)には接続がありません。関数を定義するときに提供される変数は、使用するのがより便利です。それらが定義されていなくても、関数に渡されたパラメーターを取得できます(引数[])。
関数howmanyargs(){alert(arguments.length);} howmanyargs( "a"); // 1howmanyargs( "a"、 "b"); // 2howmanyargs(); // 0正式なパラメーターと引数[]の関係は次のとおりであり、厳密なモードと非強制モードの違いに注意を払っています。
function howmanyargs(ss){arguments [0] = "test";引数[1] = "test2" alert(arguments [0]); //アラートをテストする(引数[1]); // test2 alert(ss); // test} howmanyargs( "a"); function Howmanyargs(ss){"strict"引数[0] = "test"; arguments [1] = "test2" alert(arguments [0]); // testalert(arguments [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"; } alert(output); } displayinfo({name: "nicholas"、age:29}); displayinfo({name: "greg"});