javascript言語の精粋-毒瘤(蝶々本)を読む

2142 ワード

直接に悪いところを言う
毒腫
1.グローバル変数
2.es 5はブロックレベルの作用領域がなく、es 6以上から持ち始めます.
3.returnについて
return{
}
 return
{
}
違いがあります.後者の新聞は間違っています.
4.キーワードについて
多くの保留キーワードがあります.つまり、これらは使えません.例えば、var classは不法です.また、var object={case:value}も不法です.キーワードを使わない場合は、「」を付けてください.例えばvar object={“case”:value}は可能です.
5.ユニフォームの違い
unicodeは1対の文字を単一の文字とし、javascrptは1対の文字を2つの異なる文字として認識しています.
6.typeof特別なtypeof nullは、Objectであり、より良いnullを検出する方法があり、my_value === nullもより良い方法で検出されている(nullはfalseであるため).
7.パー秒Intについて
私はif(my_value && typeof my_value === 'object'){}と言いたいだけです.このような方式は間違いがありません.
8.+号
これは複雑な行動です.あなたの目的を確保するために、二つの演算数が整数であることを保証してください.
9.浮動小数点の精度問題
まず100を掛けてから100を割って避けることができます.
10.NaN
isNaN       NaN
isNaN(NaN) //true
isNaN(0) //false
isNaN('ppp') //true
isNaN('0') //false 
isfiniteは、数値として使用できるかどうかを判断します.NaNとInfinityをふるいで除去することができます.残念なことに、TAは演算数を数字に変えようとします.しかし、私達はカスタム方法ができます.
var isNumber = function isNumber(value){
    return typeof value === 'number' && isFinite(value);
}
11.ダミー配列
javascriptは本物の配列がないので、TAはオフラインエラーを発生しません.しかし、性能は本物の配列と比べて、かなり悪いです.typeofは配列とオブジェクトを判別できません.配列かどうかを判断するために、TAのconstructorの属性を確認します.
if(my_value && typeof my_value === 'object' && my_value.constructor === Array){
//my_value     
}
上記の検出は、異なるフレームまたはウィンドウで作成された配列にfalseを与えます.以下の測定はより確実です.
if(Object.prototype.tostring.apply(my_value) === '[object Array]'){
//       
}
また、argments配列は一つの配列ではなく、TAはlengthメンバーの属性を持つオブジェクトにすぎない.
12.javascriptの中の多くの偽の値
1.0 Number
2.NaN Number
3.'' String
4.false Boolean
5.null Object
6.undefined Undefined
これらは互いに交換できないparseInt("08",10);であることに留意されたい.また、これらの値に「」の引用符を付けると、全部本当の値になります.
13.hasOweProperty
これは一つの方法で、交換されやすいです.普通は発生しません.
14.オブジェクト
javascriptの中の対象は永遠に本物の空の対象ではないです.彼らは原型チェーンからメンバーの属性を取得できます.