1. 程式人生 > >js面試題關於this指向分析

js面試題關於this指向分析

分析以下問題的列印結果及原因:
1、

  let num = 10;
  function fn() {
    console.log(this.num);
  }
  let obj = {
    num:5,
    method: function(fn) {
      fn();
      arguments[0]();
    }
  };
  obj.method(fn,1)
  //輸出10 undefined

分析:在ES5及之前,js中函式的呼叫者是誰,函式的this就指向誰。第一次執行fn()時,函式的this指向的是全域性的window,因此列印10。當arguments

0呼叫函式時,因為arguments是類陣列,屬於物件,所以this指向了當前陣列,會打印出undefined。
2、

相關推薦

js試題關於this指向分析

分析以下問題的列印結果及原因: 1、 let num = 10; function fn() { console.log(this.num); } let obj = {

剛看到一道JS試題,關於this指向的問題,很有意思,記錄一下

感謝@百里乘風、@qq_43146937指出的文章中的錯誤。 let宣告變數會形成塊級作用域,且不存在宣告提升,而var存在宣告提升。所以當使用let宣告變數時,不存在宣告提升,length屬性實際上並沒有新增到window物件中。從下面的例子可以看出 所以原文程式碼

js試題,關於變量提升,作用域,全局變量

fine log js面試 提升 per nbsp lin undefine 變量 /**********seperate line************/ var a = 10; function test() {   a = 100;   cons

了解Js中的this指向

理解 per pre ron document 它的 執行環境 col .sh   Js中的this對象是在運行時基於函數的執行環境綁定的,其中的this指向很不好理解,一不小心就用錯了位置;。   this的指向在函數定義的時候是確定不了的,只有函數執行的時候才能確定th

關於一道JS試題的思考

ges 會有 作用 初學 沒有 使用 很好 obj 值傳遞 題目: for (var i = 0; i < 5; i++) { setTimeout(function() { console.log(new Date, i); },

整理出來的前端js試題

禁止 如何改變 產生 字符串 避免 得到 作用 擴展 如何 15、HTTP狀態碼 100 Continue 繼續,一般在發送post請求時,已發送了http header之後服務端將返回此信息,表示確認,之後發送具體參數信息 200 OK 正常返回信

js試題知識點全解(一作用域和閉包)

foo true 方式 聲明 提升 function 這樣的 all 變量提升 問題: 1.說一下對變量提升的理解 2.說明this幾種不同的使用場景 3.如何理解作用域 4.實際開發中閉包的應用 知識點: js沒有塊級作用域只有函數和全局作用域,如下代碼: if(tru

js試題-----作用域與閉包

code 生命 結果 bin 聲明 click 函數 i++ spa 1、問題代碼: var length = 10; function fn(){ console.log(this.length); } var obj = { length:5,

js試題-----DOM操作和BOM操作

dom 數據 prop 樹形 結構 獲取 protocol earch 部分 題目1:DOM是哪種基本的數據結構 答案:DOM是一種樹形結構的數據結構 題目2:DOM操作的常用API有哪些 答案:獲取DOM節點,以及節點的property和Attribute。獲取父節點,獲

js試題-----通信類

log 技術分享 sof 事件 嵌入 sage list 通信 als 題目1:什麽是同源策略及限制 題目2:前後端如何通信   Ajax WebSocket CORS 題目3:如何創建Ajax   XMLHttpRequest對象的工作流程   兼容性處理

js試題1

for gif 其他 繼承 返回值 reat 前插 document 數據交換 1.介紹js的基本數據類型 Undefined、Null、Boolean、Number、String 2.js有哪些內置對象? 數據封裝類對象:Object、Array、Boolean、Numb

js試題之求數組最值

pre 面試 可能 cti clas return n) ole arr 今天繼續分享js常見的面試題,求數組最大值,最小值,這裏列舉4種常見解法,還有其他方法也可以實現,讀者知道可以私信我,我將把意見列舉到博客中,歡迎提出意見。 第一種,利用數組排序 1 var arr

JS試題

urn settime 銷毀 dom set ons -1 執行 blog for(var i = 0; i < 5; i++) { setTimeout(function() { console.log(i); }); } for

前端第四課——JS試題

json 數據 面試題 win javascrip 圖片 cti ges 基本數據 筆試題 1.JavaScript的基本數據類型 2.["1","2","3"].map(parseInt)答案? 3.JavaScript中如何將JSON轉化成對象/數組?怎麽轉回來? 4.

js 試題

表現 區別 ech 計算 如何 編寫 dom 一個 利用 1.截取字符串abcdace的acealert(‘abcdace‘.substring(4)); 2.規避javascript多人開發函數重名問題命名空間封閉空間js模塊化mvc(數據層、表現層、控制層)seajs變

JS中的this指向問題

too 而是 call logs strong javascrip log 方法 手動 原博客:https://www.cnblogs.com/pssp/p/5216085.html 首先必須要說的是,this的指向在函數定義的時候是確定不了的,只有函數執行的時候才能確

js中關於this指向的問題的簡單總結

ima efi tex PE 解決 size watermark 問題 fin 1:在全局作用域下 this對象指向的是window對象例如:結果如下:2:在函數作用域下 在非嚴格模式下: this的指向依舊是window對象例如:結果如下:在嚴格模式下:this的指向

vue.js試題整理

res rate 分享 變量 部分 及其 修改 use 取數據 Vue.js面試題整理 一、什麽是MVVM? MVVM是Model-View-ViewModel的縮寫。MVVM是一種設計思想。Model 層代表數據模型,也可以在Model中定義數據修改和操作的業務邏輯;Vi

C++&C試題100道分析(61-80)

數字函數 struct tr1 cls light 什麽 地址 全局 編寫 61.字符指針、浮點數指針、以及函數指針這三種類型的變量哪個占用的內存最大?為什麽?   指針變量占有的空間是固定的,他和計算機操作系統的位數有關系。 62.構造函數可否是虛函數,為什麽?析構函

一道考察運算子優先順序的JS試題

文章目錄 題目 分析 1. Foo.getName() 2 .getName 3. Foo().getName() 4. getName()