最新のJS面接の質問の分析

php中世界最好的语言
リリース: 2017-11-27 13:54:30
オリジナル
1955 人が閲覧しました

Web フロントエンドの場合、面接中に必ずいくつかの JS 面接の質問に遭遇するでしょう。今日は、最新の JS 面接の質問のいくつかをまとめます。それぞれの質問は印象的です。

事前分析: 現在の役割で。ドメイン、js を実行する前に、var および function キーワードは事前に宣言されますが、割り当てられません (個人的な意見)

事前解析に感銘を受けました。難しいからではなく、やらなければならないからです。注意してください、そして少し不注意です、答えは間違っています!分析前の質問は複数ありましたが、そのうちの 2 つを今でも覚えています。

2-1. 事前分析1

alert(a)
a();
var a=3;function a(){
    alert(10)
}   
alert(a)
a=6;
a();
ログイン後にコピー

---------------区切り線---------------------

alert(a)
a();
var a=3;
var a=function(){
    alert(10)
}   
alert(a)
a=6;
a();
ログイン後にコピー

このコードにたどり着いたとき、間違った答えが得られました。その後、友人にアドバイスをもらい、自分でも理解してスッキリしました!
実際には、テストのポイントは 2 つあります。1 つ目は、変数を事前に宣言することです。2 つ目は、変数を宣言する前に関数を宣言することです。
最初の部分の結果を簡単に分析してみましょう:
1. 関数宣言は変数宣言よりも優先されるため、最初は a が function a(){alert(10)} であり、この関数が表示されます。
2.a()、関数が実行されると、alert(10)が表示されます
3. Var a=3が実行されるため、alert(a)は3を表示します
4. aは関数ではないため、実行を続行します。 a() の場合、エラーが報告されます。
操作結果の 2 番目の部分:
1.underfind
2. エラー報告
前述したように、事前解析は var キーワードと function キーワードを使用した事前宣言ですが、値の割り当てはありません。そのため、最初はアンダーファインドでしたが、その後、 a() が実行されたときに a が関数ではなかったため、エラーが報告されました。

//

関数式、変数宣言と等しい

var a=function(){
    alert(10)
}
ログイン後にコピー

//関数宣言、変数宣言よりも優れています


function a(){
    alert(10)
}
ログイン後にコピー

2-2. 事前解析とスコープ

var a=0;function aa(){
    alert(a)
    a=3
}
ログイン後にコピー

//結果は何も発生しません。 aa関数実行時のみalert(0)が実行されます


---------------分割行1---------------------


var a=0;function aa(){
    alert(a)
    var a=3
}
aa();
ログイン後にコピー

//underfind aa関数内にvar a=3があり、aaスコープ内で変数aが事前に宣言されているが値が代入されていないのでunderfind


------ - ----2行目の区切り------------------

var a=0;function aa(a){
    alert(a)
    var a=3
}
aa(5)
alert(a)
ログイン後にコピー

//5,0 関数本体ではパラメータaの

優先度の方が高い変数 a の
---------------3 行目の分割----------

var a=0;function aa(a) {
alert (a)
a=3
}
aa(5)
alert(a)
//5,0 関数本体で、alert(a) と a=3 を実行します。変更されるのはグローバルではありません変数 a ですが、パラメータ a

---------------4行目----------


var a=0;function aa(a){
    alert(a)
    var a=3
    alert(a)
}
aa(5)
ログイン後にコピー

//5、 3

// インターネットでアドバイスを求めましたが、答えは 2 つあります (理解できる場合は、コメントでアドバイスをお願いします)
//1。優先順位は変数宣言よりも高いため、変数 a の宣言は実際には無視されます。これは
//var a=0;
//function aa(a){
// var a=5;
// と同等です。 alert(a)
//a=3
//alert(a)
//}
//aa(5)

//2。仮パラメータとローカル変数は同じ優先順位を持ち、これは
/ と同等です。 /var a=0;
//function aa(a){
// var a; まず
を宣言します // a=5 仮引数と変数名は同じなのでカバーします!
//alert(a)// a=3//alert(a)
//}
//aa(5)

---------------5行目を区切ります-- ----------------


var a=0;function aa(a){
    alert(a)
    a=3
    alert(a)
}
aa()
alert(a)
//underfind  3  0
ログイン後にコピー

//まず、パラメータが渡されていないので、パラメータの優先度がグローバル変数よりも高いです
//a =3、実際には、変更するとき、仮パラメータ a の値はグローバル変数 a ではありません。alert(a) の下に行くと、仮パラメータ a にもなります

//最後のalert(a)ですね



3。ループと再帰

3- 1. フィボナッチ配列

これについては多くは言いません。非常にシンプルですが、非常に古典的です。つまり、現在の項目は前の 2 つの項目の合計に等しい

var arr=[];for(var i=0;i<10;i++ ){
    i<=1?arr.push(1):arr.push(arr[i-1]+arr[i-2]);
}
console.log(arr)
ログイン後にコピー

3-2. データの配置

例えば、123454321 23456765432

これを行うには?そのときの私のアプローチは、最初に表を表示し、次に裏側を表示するという2つのステップで書かれていました。 これは多すぎるコードです。以下

1. 最初に num(2,5 ) を実行します。それは

//01234543210
//先展示前面的   01234
//n:开始的数字    m:结束的数字function num1(n,m){    for(var i=n;i<m;i++){
        //再展示后面的 543210
        console.log(i);        if(i===m-1){
            num2(n,m)
        }
    }
}function num2(n,m){    for(var i=m;i>=n;i--){
        console.log(i)
    }
}
num1(2,5)  //2345432
ログイン後にコピー

で、次にそれは

function num(n,m){
    console.log(n);    if(n<m){
        num(n+1,m);
        console.log(n);
    }
}
num(2,5)  //2345432
ログイン後にコピー

で、最後にそれは

console.log(2); ->  num(3,5);  ->  console.log(2);      
//执行num(3,5);  就是是相当于   console.log(3); -> num(4,5); -> console.log(3); 下面以此类推
console.log(2); -> console.log(3); -> num(4,5); -> console.log(3); ->  console.log(2);
ログイン後にコピー

です。これらの事例を読んだ後は、このメソッドを習得したと思います。 php 中国語 Web サイトの他の関連記事にも注目してください。


関連記事:

CSS3で飛ぶ蝶のアニメーションを作成する方法


キャンバスを使用してボールとマウスの相互作用を実現する方法

キャンバスを使用してパーティクルを作成する方法噴水アニメーション効果

以上が最新のJS面接の質問の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート