30人のあなたが「全部できるわけがない」というjavascriptの答え


1,D
mapは、配列の要素ごとに定義されたコールバック関数を呼び出し、結果を含む配列を返します.[1],「2」,「3」,map(parseInt)は、配列内の各要素に対してパリスIntを呼び出す.しかし、このテーマは違っています.
function testFuc(a){
        return parseInt(a);
}
console.info(["1","2","3"].map(testFuc));
タイトルは以下と同じです
function testFuc(a,x){
        return parseInt(a,x);
}
console.info(["1","2","3"].map(testFuc));
mapにおけるコールバック関数の文法は以下のように示されています.最も多い3つのパラメータでコールバック関数を宣言することができます.第一パラメータvalue、配列要素の値.第二のパラメータindexは、配列要素の配列です.array 1は、この要素を含む配列オブジェクトです.
したがって、タイトルは[parseInt(1,0),parseInt(2,1),parseInt(3,2)]に等しい.
最終的に[1, NaN, NaN] parseIntに戻ります.http://www.2cto.com/kf/201304/203710.html 2,A
typeofを使って変数または表式の種類を取得します.typeofは通常次のような結果を返します.
number,boolean,string,function(  ),objectNULL,  ,  ),undefined
instance ofは、ある変数があるオブジェクトの一例であるかどうかを表し、nullは特別なObjectタイプの値であり、空引用という意味です.しかし、nullがobjectに戻るというのは、最初にJavaScriptの実現の誤りであり、ECMAScriptによって引き継がれ、現在の標準となりました.しかし、nullはまだ存在していない対象のプレースホルダとして理解できます.これは矛盾しないです.これは一種の「弁明」です.私たち開発者にはやはりこのような「言語特性」を警戒しなければなりません.最終回:[[object],false]
3,A
pow()メソッドはxのy乗の値を返します.[3,2,1].reduce(Math.pow);等しい:
function testFuc(x,y){
        console.info(x +" : "+y);
        return Math.pow(x,y);
}
console.info([3,2,1].reduce(testFuc));
Math.pow(3,2)とMath.pow(2,1)を実行し、最終的に9と9に戻ります.
ただし、powのパラメータは必須であり、[].reduce(Math.pow)は、Math.pow();間違いを招く
4,A
最初に文字列スティッチングを実行してから検証を実行します.
var val = 'value';
console.info('Value id '+(val === 'value123')?'Something':'Nothing');
同じようにsomethingに戻ります.
5,A
判断文は即時呼び出し関数に包まれており、関数内部では「World」のnameにアクセスできないため、typeof name===「undefined」を真にして、次のステップを実行し、Goodbye Jackを出力します.
6,D END=9007199254740992,START=909007199254740892は、計算されたENDとSTARTの間の差を目的としています.しかし、2の53乗で算出された結果は精度の問題でi++が無効となりました.
7,C
filterは、与えられた値がない要素、すなわちarrでは、長さは10であるが、実際の数値要素リストは[0,1,2,10]であるため、最終的には空の配列[]に戻る.
8,C
2つの浮動小数点が加算されたり、減算されたりすると、一定の正常なデータ変換による精度が失われます.
JavaScriptでの小数は二重精度(64桁)で表されています.三部分から構成されています.符+階数+端数、十進数のうちの1/10は、十進法では簡単に0.1と書くことができますが、二進法では、0.00010001100110011001000110011001100110110011001001001001001000101010101010110010010010010010010001.........(後は全部1001サイクルです.)と書かれています.浮動小数点数は52桁の有効数字しかないので、53位から切り捨てました.これにより「浮動小数点精度損失」の問題が発生します.
より厳密な方法は(eigh-six).tototoFiexd(1)またはMath.round方法で整数演算に戻ります.二つの浮動小数点が等しいかどうかを判断するには、やはり、if((a-b)<1 E-10)のような近似的な比較が望ましい.
9,C
new String()を用いて構造関数を呼び出し、新たなオブジェクトをthis変数の値として話し、この新しいオブジェクトを呼び出しの結果として暗黙的に返します.したがって、showCase()が受信したパラメータはString{0:“A”であり、私たちが考えている「A」ではないです.
10,A
Stering(A)を直接呼び出して作成した変数と"A"は同じです.
var a="123"    '       b=new String('123') '      

var a="123";
a.sex=1;
alert(a.sex);//     ,      ,     

b=new String('123');
b.sex=1;
alert(b.sex);//  1,     
11,C
function isSane(num){
    return isEven(num)||isOdd(num);
}
この関数はnumが正の整数かどうかを判断します.'13'は強制的に数値13に変換されます.-9%2は-1、Infinity%2はNaNです.
12,D最終結果は[3,NaN,3]である.パーrseInt()関数は、文字列を解析し、整数を返します.パラメータradixの値が0である場合や、このパラメータが設定されていない場合は、パー秒Int()は、stringによって数字の基数を判断します.
13,A Aray.prototypeは[]であり、Aray.isAray(a)はaが配列であるかどうかを判断する方法である.
オブジェクトが配列かどうかを判断する方法:1)ES 5関数isAray()は、オブジェクトの内部[クラス]属性がArayであるかどうかをテストする.
Arrray.isArray(a);
2)オブジェクトの構造関数がArayかどうかを判断する:
a.constructor === Array
3)オブジェクト内部の[クラス]属性を使って結果の文字列を作成します.
Object.prototype.toString.call(a)
4)instance ofオペレータを使用してテスト対象がArayから継承されているかどうか(ただし、1ページのiframeは他のページからiframeを引き継ぎませんので、この方法は信頼できません)
a instanceof Array
14,Bはif条件判定文の対=がゆったりしている中で、if(n)、nがnullでない限り、0,undefinedの数値はtrueに変換されます.consone.infoに入る(a=true);最後にfalseを返します.
15,B配列は、Javascriptにおいて対象であり、対象使用==比較は比較的参照である.簡単に言えば、同じ相手であれば、同じ相手でなければ同じです.毎回[]を使うたびに新しい配列のオブジェクトが作成されますので、[]==[]という文では2つのデータオブジェクトが作成されています.
16,Aは'5'+3を実行し、プラス記号はスティッチング文字列機能を備えており、3を強制的に文字列'3'と'5'に変換します.'5'-3を実行します.マイナス記号は数値演算の機能だけを備えていますので、'5'を数値に変換し、5-3の数値演算を行います.
17,C
18,Dは賦課と声明を区別する.var arr=Aray(3);長さ3の配列を作成しますが、実際には1つの要素だけが割り当てられています.したがって、arrの実際の長さは1です.つまり、最後に参加したのは1つの要素だけで、[1]を返します.
19,Dは実行手順に従い、疑いなく最終結果は10+1+10です.
20、B jsの正確な整数は、最大:Math.pow(2,53)-1=9007199254740991.var a=111111111111111111110000、max=90071254740992;aの値はjavascriptによって表現される最大整数精度より大きいので、任意の数値との加算は歪みをもたらす.深い理解は見ることができる.http://www.zhihu.com/question/24423421
21,Cの正しい呼び方はx.cal([])です.
22,B Number.MIN_VALEで表している最小値は5 e-324、MIN_VALEは負が一番小さいのではなく、0に一番近い数を表していますので、Number.MIN_VALE>0マイナス最小値は-Number.MAX_を使用できます.VALEは述べた
23,A 1<2,trueに戻り、true<3,強制的にtrueを1,1<3に変換して、最終的にtrueに戻ります.3<2、falseに戻り、false<1を実行すると、強制的にfalseを0、<1、最終的にtrueに戻ります.
24,Aはa==bを用いてaとbのオブジェクトが等しいかどうかを判断し、bのオブジェクトをaのオブジェクトのタイプに強制的に変換することができ、すなわち2=[[2]]を実行し、パースInt([[2]]])を暗黙的に呼び出して[[2]]を強制的に数字の基本量に変換し、すなわち2=2を行い、最終的にtrueに戻ります.
25,C NumberのtoString(a)は、数値をa進の値に変換することができる.但し、aがデフォルトの場合、デフォルトは10進数になります.一般的な使い方は、var n=3です.3.toString()3.toString()を実行すると、3は数値型変数であり、Number以外の例であるため、3については直接的にNumberメソッドを呼び出すことができない.3.toString()を実行すると、強制的に3をデジタルの例に変換するので、解釈され、3を出力し、同様に(3).toString()を使用することができる.
26,Cは即時呼び出し関数内で実行され、var x 1=y 1=1;ローカル変数x 1とグローバル変数y 1を作成します.関数の外部から関数内部の変数にアクセスしようとすると、エラーが発生します.
27,IEとFFスクリプトの互換性の問題(1)window.eventは現在のイベントオブジェクトを表し、IEはこのオブジェクトを持っています.FFはイベントソースIEを取得していません.イベントソースをsrculementで取得し、FFはイベントソースをtargetで取得します.
IE:element.attachEvent("onclick",function)
element.detachEvent("onclick",function)
FF:element.addEventListener("click",function,true)
element.removeEventListener("click",function,true)
28,タイトルに与えられたコードは、addEventListenerがIEブラウザに対応していない問題以外に、最も顕著な問題は:ページ上にはbutton+iのボタンが表示されますが、いずれかのボタンをクリックして、最終的には5が表示されます.
関連ボタンをクリックするには、該当する1、2、3、4、5の値をポップアップします.修正後のコードは以下の通りです.
function initButtons(){ 
        var body = document.body,button,i; 

        for(i =0;i<5;i++){ 
            (function(i){ 
                button = document.createElement("button"); 
                button.innerHTML = "Button" + i; 
                button.addEventListener("click",function(e){ 
                    alert(i); 
                },false); 
                body.appendChild(button); 
            })(i); 

        } 

    } 
    initButtons();
結合と賦課に関して区別がある.動作中にアクティブ領域に入ると、Javascriptは、各作用領域に結合された変数のメモリに「スロット」を割り当てます.関数では、変数document.bodyを作成し、button,iを作成します.したがって、関数体(ボタンを作成し、ボタンバインディングイベント)を呼び出した場合、関数は各変数に「溝」を割り当てます.循環の反復のたびに、循環体はネスト関数に閉ループを割り当てる.この関数はネスト関数作成時の変数iの値を格納していると理解できる.しかし、彼が記憶しているのはiの引用です.関数が作成されるたびに変数iの値が変化するので、関数内部では最終的に変数iの参照が見られます.クローズドは、値ではなく外部変数の参照を格納します.すぐに呼び出される関数式は、Javascriptのブロックレベルの機能領域の欠如を解決するために不可欠な方法である.深く理解する必要があります.「Effective JavaScript」第13条を参照してください.即時に起動する関数式を使って、局所的な作用領域を作成します.
29,従来の方法と正規表現を用いて2つのアルゴリズムを整合する.
/コードを書きます.一つの文字列の中で最も多く出現した文字列を判断し、出現回数を統計します.
function toGetTheMostCharsByArray(s){ 
    var r={}; 
    for(var i=0;i<s.length;i++){ 

        if(!r[s[i]]){ 
            r[s[i]] = 1; 
        }else{ 
            r[s[i]]++; 
        } 
    } 
    var max = { 
        "value " :s[0], 
        "num" :  r[s[0]] 
    }; 

    for(var n in r){//    in   ,    length 

        if(r[n]>max.num){ 
            max.num = r[n]; 
            max.value = n;  
        } 
    } 
    return max; 
} 
function toGetTheMostCharsByRegex(s){ 
    var a = s.split(''); 
    a.sort(); 
    s = a.join(''); 

    var regex = /(\w)\1+/g ;//\1      

    var max = { 
        "value " :s[0], 
        "num" :  0 
    }; 

    s.replace(regex,function(a,b){ 
        if(max.num < a.length){ 
            max.num = a.length; 
            max.value= b; 
        } 
    }); 

    return max; 

} 
var test = "efdfssssfrhth"; 
console.info("       ,         :"+toGetTheMostCharsByArray(test).value+" ,    :"+toGetTheMostCharsByArray(test).num); 
console.info("       ,         :"+toGetTheMostCharsByRegex(test).value+" ,    :"+toGetTheMostCharsByRegex(test).num); 
30,javascriptのエンジンは単一スレッドのjavascriptのエンジンです.イベント駆動のsetTimeoutとset Intervalはイベントキューに処理時間を一つ追加します.set Timeoutは一回だけトリガします.set Intervalは循環トリガです.
setTimeout(function(){
    //   
    setTimeout(arguments.callee,10);
},10);
上のセグメントコードは、setTimeoutループをトリガすることができる.ただし、このコードブロックを実行してから保留時間がかかりますので、2回の実行時間は10ミリ秒以上になります.
setInterval(function(){
    /*   */
},10);
前の部分のコードは自動的に10時にこのイベントを掛けるので、2つのイベントの間隔は10ミリ秒以下になります.スレッドが一つのイベントでブロックされている場合、setIntervalを使ってもsetTimeoutを使っても、現在のイベントの処理が完了するまで待つ必要があります.javascriptスレッドの渋滞をもっと理解したいです.確認できます.http://blog.csdn.net/i10630226/article/details/49497637に記載されています.