良いプログラマのWebフロントエンドのチュートリアルを共有JavaScriptの顔の質問

  良いプログラマシェアJavaScriptの顔の質問チュートリアルWebフロントエンド

  1、JavaScriptのthisポインタ、クロージャのスコープ

  この:指し示すコールコンテキスト

  閉鎖:変数のスコープ外の最も内側のスコープにアクセス

  スコープ:ローカルスコープを開くための関数の定義、全体の JS実行環境は、グローバルスコープを持っています

  2は、JavaScriptの同一生成元ポリシー

  スクリプトは唯一ドキュメントプロパティウィンドウと同じソースから読み取ることができ、ここで同じソースは、ホスト名、プロトコルとポート番号の組み合わせを指し、

  HTTP、FTP:プロトコル

  ホスト名、ローカルホスト

  ポート名:デフォルトのポートHTTPプロトコル:80

  HTTPS:デフォルトのポートは8083です

  元ポリシーは、トラブルをもたらします:異なるドメインでのAJAX要求を達成することができません、

  あなたが他のソースを要求したい場合は、JSファイル、またはJSONデータを、それがJSONPによって解決することができます

  3、次のコードを見て、何を出力?説明

  varが未定義; //この時点では、この変数の値は未定義定義されていません

  未定義== nullを。//真

  1 ==真。//真

  このときデジタル型に値をブールます  真= 1偽= 0

  2 ==真。//偽

  0 == falseは、//真

  0 == ''; //真

  NaNの== NaNに。//偽

  [] ==偽。//真

  [] == []!; //真

  未定義のヌルが、同一ではないに等しい(===)

  一つは、ある数の1つの文字列、数値に文字列を変換しようとする試み

  尝试将boolean转换为number,0或1

  尝试将Object转换成number或string,取决于另外一个对比量的类型

  所以,对于0、空字符串的判断,建议使用 “===” 。“===”会先判断两边的值类型,类型不匹配时为false。

  4、请你谈谈Cookie的弊端

  1.`Cookie`数量和长度的限制。每个domain最多只能有20条cookie,每个cookie长度不能超过4KB,否则会被截掉。

  2.安全性问题。如果cookie被人拦截了,那人就可以取得所有的session信息。即使加密也与事无补,因为拦截者并不需要知道cookie的意义,他只 要原样转发cookie就可以达到目的了。

  3.有些状态不可能保存在客户端。例如,为了防止重复提交表单,我们需要在服务器端保存一个计数器。如果我们把这个计数器保存在客户端,那么 它起不到任何作用。

  5、哪些操作会造成内存泄漏?

  内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。

  垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的引用数量为0(没有其他对象引用过该对象),或对该对象的 惟一引用是循环的,那么该对象的内存即可回收。

  1. setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏。

  2. 闭包

  3. 控制台日志

  4. 循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)

  6、输出多少?

  var a = 6;

  setTimeout(function () {

  var a = 666;//由于变量a是一个局部变量

  alert(a); // 输出666,

  }, 1000);

  a = 66;

  因为var a = 666;定义了局部变量a,并且赋值为666,根据变量作用域链,

  全局变量处在作用域末端,优先访问了局部变量,从而覆盖了全局变量。

  var a = 6;

  setTimeout(function () {

  //变量声明提前

  alert(a); // 输出undefined

  var a = 666;

  }, 1000);

  a = 66;

  因为var a = 666;定义了局部变量a,同样覆盖了全局变量,但是在alert(a);之前

  a并未赋值,所以输出undefined。

 


おすすめ

転載: blog.51cto.com/14573321/2448704