ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript に関するあまり知られていない知識ポイント

JavaScript に関するあまり知られていない知識ポイント

巴扎黑
巴扎黑オリジナル
2017-07-22 15:24:591210ブラウズ

ネイティブ関数

よく使われるネイティブ関数

String()

Number()

Boolean()

Array()

Object()

Function()

Re gExp()

Date()

Error()

Symbol()

内部プロパティ[クラス]

typeofの戻り値がobjectであるすべてのオブジェクトには、内部プロパティ[クラス]が含まれます、 このプロパティには直接アクセスできません 。通常は Object.prototype.toString(..) を通じて表示されます 。例: :

Object.prototype.toString .call(null);

カプセル化されたオブジェクトラッパー

基本型の値には.lengthなどの属性がないため

.toString( )

メソッド。 "abc" ;

var b = new String(a); var c = Object(a);

カプセル化された関数を直接使用することは一般的に推奨されません 解凍

オブジェクト内の基本型の値をカプセル化します。

valueOf() 関数を使用できます。

var a = new String("abc"); " b.valueOf(); // 42 c.valueOf(); // true コンストラクタとしてのネイティブ関数 Array(. .)

var a = new Array( 1,2 ,3);

a; // [1,2,3]

// [1,2,3]

b; ,2,3]

コンストラクタ

Array(..)、はキーワード

newを含める必要はありません、

が含まれていない場合は自動的に入力されますArrayコンストラクタがパラメータを1つだけ取る場合、パラメータは配列内の要素の場合ではなく、配列

のプリセットの長さになります。

var a = new Array(3);

a.length; // 3

a;

空の cell 配列を作成して使用しないでください

Object(..) , Function(.. ),

RegExp(..)

絶対に必要な場合を除き、

Object(..)/Function(..)/RegExp(..)を使用しないでください

Date(..)

エラー(..)

作成時間は new Date()を使用する必要があり、は主に現在のUnixタイムスタンプDate.new()を取得し、日付オブジェクトのgetTime()を通して取得するために使用されます。 。

エラーオブジェクト(error object)を作成します 主に現在実行中のコンテキストを取得します。

シンボル(..)

基本データ型——シンボル。シンボルには固有の特別な値があり、属性 に名前を付けるために使用しても、名前が簡単に重複することはありません。

Symbolの静的属性形式, Symbol.create, Symbol.iterator

obj[Sybol.iterator] = function() {/*..*/}

Symbol(..)を使用ネイティブ コンストラクターはシンボルのカスタマイズに使用され、新しい キーワードを含めることはできません。それ以外の場合はエラーが報告されます。

var mysym = Symbol("自分のシンボル");

mysym; // シンボル(自分のシンボル)

mysym.toString(); typeof mysym; // "シンボル"

var a = { };

a[mysym] = "foobar";

Object.getOwnPropertySymbols(a);

// [シンボル(自分のシンボル)]

プロトタイプの種類

文字列内の指定された値を見つける 文字列の位置。

String#charAt(..) 文字列内の指定した位置の文字を取得します

String#substr(..)、String#substring(..)

String#slice(. .)

文字列の指定部分を取得

String#toUpperCase()

andString#toLowerCase()

文字列を大文字と小文字に変換します String#トリム()

文字列の前後のスペースを削除し、新しい文字列を返します

キャスト

‖ある型から別の型への変換、これは Case で示されています

暗黙的な case は通常キャストされます。

JavaScriptにおける型変換は常にスカラー基本型を返します。抽象値操作

メソッドはすべてを含むように再定義されました。 ユニットが文字列化された後、それらは一緒に接続されます。

var a = [1,2,3];

a.toString() // "1,2,3"

JSON文字列置換,

;

JSON.stringify(..) オブジェクト内で未定義、関数シンボルに遭遇した場合、自動的に無視され、配列内ではnullを返します。

JSON.stringify(function(){}); in in through in in Instant on [1,unknown,function( ){},4]

) // "[1 ,null,null,4]"

JSON.stringify(

{a:2,b:function(){}}

); // "{"a":2}"

toJSON( )

は、任意の型の適切な値

を返し、

JSON.stringify(..)

alignment によって文字列化されます。

ToNumber

数学的な演算など、数値以外の値を数値として使用する必要がある場合があります。 true

1

に変換され、false

0に変換され、未定義のNaNに変換されます nullを変換から0まで対応する基本型の場合、抽象操作

ToPrimitive ,

は、まず値 valueOf() メソッドがあるかどうかを確認し、ある場合はその値を強制的な型変換に使用します。そうでない場合は、

toString()の戻り値を使用して、強制的な型変換を実行します。 valueOf() toString() も値

を返さない場合、TypeError エラーが発生します。 ToBoolean False value: 値は以下の2つに分類できます。

1.

false

の値にキャストできます。

)の値

以下は偽の値です

未定義nullfalse+0,-0NaN

""

by ブラウザ 特定の状況下では、通常の

JavaScript

構文に基づいて、

はいくつかの外部を作成します値、これらは

"

false value オブジェクト" です。 int は

Explicit Cast

によって作成されます

var a = 42;

var b = 文字列(a);

var c = "3.14"; var d = Number(c);b; // "42"

d: // 3.14

文字列と数値の間の表示変換を実現する他の方法もあります

var a = 42;

var b = a.toString();

var c = "3.14";

var d = +c;

b; // "42"

d: // 3.14

日付表示を変換します数値への変換

別の単項演算子

+

一般的な使用法は、日付オブジェクト

(Date)

オブジェクトを

数値にキャストすることです。

var timestamp = +new Date();

数値文字列の明示的な解析 文字列内の数値を解析し、文字列を数値にキャストした場合の戻り結果はすべて数値です。 例:

var a = "42";

var b = "42px";

Number(a) // 42

parseInt(a); b ); // NaN

parseInt(b); // 42

解析では、文字列に数値以外の文字が含まれることが許可されます。それは止まります。

parseInt(..)

parseInt(..) のような文字列を対象としています

数値や他の種類のパラメータを渡すのは無意味です

Booleanへの表示変換

ToBoolean

I明示的です

ToBoolean キャスト:

var a = "0";

var b = [];var c = {};

var d = "";

var e = 0;

var f = null;

var g;Boolean(a); // true

Boolean(c); // true

Boolean (d) ); // false

Boolea(e) // false

Boolea(g);値をブール値に明示的にキャストします。

var a = "0";

var b = [];

var c = {};

var d = "";

var e = 0;

var f = null;

var g;

!!a; // true

!!b; // true

!!d; ; // false!!f; // false

!!g // false

暗黙的に単純化します

文字列と数値間の暗黙的なキャスト

+演算子は数値の加算と文字列の連結の両方に使用できます。

var a = "42";

var b = "0";

var c= 42;

var d = 0;

a + b; // "42"

c + d; // 42

オブジェクトの - 演算は + var a = [3]

a - b ; // 2

暗黙的キャストからブール値への数値へのキャスト

暗黙的キャストからブール値へのキャスト

以下の場合に暗黙的キャストが発生します

1.if(..)

ステートメント内の条件式。

2.for(..;...;..)

ステートメント内の条件判断式(

2番目)3.while(..) anddo.. while(..)

ループ内の条件判定式。 4.? :

5の条件式

論理演算子|| (

論理OR) (論理AND) 左側のオペランド(条件判定として)式) || &&

|| &&

演算子の戻り値は、2 つのオペランドのいずれかの値です var a = 42;var b = "abc";

var c = null;

a || 42

a && b; b; // "abc"

c&& b; // null

の場合、条件判定結果が

の場合、最初の数値が返されます

false の場合、

は 2 番目のオペランドを返します。 &&はその逆です。 以下は || 非常に一般的な の使用法です。

function foo(a,b){

a = a || "こんにちは";

b = b || "ワールド";console.log(a + " " + b );}

foo(); // "hello world"

foo("yeah","yeah") // "yeah yeah"

シンボルの強制型変換

緩和等価性と厳密等価性

== は等価比較でのキャストを許可しますが、=== は許可しません

ulousint() 注

NaN

NaN

+0 と等しくありません-0

と等しい 大まかに等しくない !=

==の逆、!==はと同じ 理由 文字列間の等価比較と数値

1.

Type(x)

が数値であり、Type(y)が文字列の場合、x== ToNumber (y) を返します の結果

2.

Type(x)

が文字列で、

Type(y) が数値の場合、ToNumber(x)== y の結果を返します。 var a = "42";

var b = true;

a == b; // false

1.

Type(x) がブール型の場合、ToNumber(x) == yの結果

2.

If

Type(y)

はブール型で、

x == ToNumber(y) の結果を返します 最初: var x = true;

var y = "42" ;

x == y; // falsevar x = "42";var y = false;x == y ; // falseの等価比較

未定義

==

null

未定義

の間

Hermit キャストも関与します。

1.

x null、y

未定義、の場合、結果は tru​​e

2.x 未定義、y null、の場合、結果はtru​​e

var a == null;

a= = b; // true

a == null; // true

a == false; // false

a = = "" ; // false

b == ""; // false

b == 0; // false

;

オブジェクトと

(

object

/

function

/

array)とスカラープリミティブ型(string)について比較してみます。 /数値/の比較ブール値)の間。 1.Type(x) が文字列または数値、type(y)がオブジェクトの場合、

x == ToPrimitive(y) の結果を返します 2.Type(x)がオブジェクトで、Type(y)が文字列または数値の場合、

ToPromitive(x) == y の結果を返します。 var a = 42;var b = [42];a == b; // true

var a = "abc";var b = Object(a); new String(a)

Same

a === b; // false

a == b; // true

a == b

結果は

tru​​e、

bとなるはずです

ToPromitive

を介してキャストを実行し、a に等しいプリミティブ値 "abc" を返します。 等しい false 値の比較は日常的であり、型破りな比較です "0" == null; // false "0 " == false; // true -- めまいがする! "0" == NaN; // false"0" == ""; // false

; // false

false == 未定義; // false

false == 0; // true -- ハロー!

false == "" // true -- めまい!

false == [] // true -- めまい!

false == {} // false

"" == null; // false

"" == NaN; == 0; // true --

めまい!

"" == []; // true -- めまい!

"" == {}; // false

0 == 未定義; // false

0 == NaN; []; 本当 --

めまいがする!

0 == {}; false

偽陽性だからです。

極端な場合

[] == ![] // true

ブール値の強制型変換

[] == ![]

[] == false ,

になります

2 == [2] "" == [null]; //true42 == "43" // false

"foo" == 42; // false

"true" = ' "" // false

42 == "42" // true

"foo" == ["foo"] // true

暗黙的なキャストの安全な使用

1.両側に

tru​​e

または

false が含まれます。

==.2. 両側の値に []、"" が含まれる場合、 または

0

==は使用しないようにしてください。現時点では、強制的な型変換を避けるために === を使用するのが最善です。 抽象関係比較

両側は文字列比較

var a = ["42"];var b = ["043"];

a < // false

a

b

は数値に変換できません。

ToPrimitive

は文字列を返し、 "42 " " 043" を比較します。

2 つの文字列、

"0" はアルファベット順で "4" より小さいため、最終結果は false になります。

var a = [4,2]; var b = [0,4,3];

a a "4,2"に変換され、b "0,4,3"に変換されますも同様にアルファベット順に比較されます。

var a = {b:42};

var b = {b:43};

a < // false

a [オブジェクト Object]、b [object Object] つまり、アルファベット順では

a < b は成り立ちません。

var a = {b:42};

a < b; // false

a > ; b; // false

a >= b;

以上がJavaScript に関するあまり知られていない知識ポイントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。