發布時間:2024-01-24閱讀(23)
61.作用域的分類參考答案:塊作用域、詞法作用域、動態作用域,今天小編就來說說關于js基礎面試試題?下面更多詳細答案一起來看看吧!

js基礎面試試題
61.作用域的分類
參考答案:塊作用域、詞法作用域、動態作用域
解析:
1 塊作用域 花括號 {}
2 詞法作用域(js 屬于詞法作用域) 作用域只跟在何處被創建有關系,跟在何處被調用沒有關系
3 動態作用域 作用域只跟在何處被調用有關系,跟在何處被創建沒有關系
參與互動
62.js 屬于哪種作用域
參考答案:詞法作用域(函數作用域)
解析:
// 塊作用域/*{ var num =123; } console.log(num);*/// 如果js屬于塊作用域,那么在花括號外部就無法訪問到花括號內部的聲明的num變量。// 如果js不屬于塊級作用域,那么花括號外部就能夠訪問到花括號內部聲明的num變量// 能夠輸出num變量,也就說明js不屬于塊級作用。// 在ES6 之前的版本js是不存在塊級作用域的。//js屬于詞法作用域還是動態作用域// js中函數可以幫我們去形成一個作用域/* function fn(){ var num =123; } fn(); //在函數外界能否訪問到num這樣一個變量 console.log(num)*/ //Uncaught ReferenceError: num is not defined// 如果函數能夠生成一個作用域,那么在函數外界就無法訪問到函數內部聲明的變量。// js中的函數能夠生成一個作用。 函數作用域 。// 詞法作用域:作用的外界只跟作用域在何處創建有關系,跟作用域在何處被調用沒有關系var num = 123;function f1() { console.log(num); //}function f2() { var num = 456; f1(); //f1在f2被調用的時候會被執行 。}f2();//如果js是詞法作用域,那么就會輸出f1被創建的時候外部的num變量 123//如果js是動態作用域,那么f1執行的時候就會輸出f1被調用時外部環境中的num 456
參與互動
63.浮點數精度
參考答案:參考
參與互動
64.自執行函數? 用于什么場景?好處?
參考答案:
自執行函數: 1、聲明一個匿名函數 2、馬上調用這個匿名函數。作用:創建一個獨立的作用域。
好處:防止變量彌散到全局,以免各種 js 庫沖突。隔離作用域避免污染,或者截斷作用域鏈,避免閉包造成引用變量無法釋放。利用立即執行特性,返回需要的業務函數或對象,避免每次通過條件判斷來處理
場景:一般用于框架、插件等場景
參與互動
65.多個頁面之間如何進行通信
參考答案:有如下幾個方式:
參與互動
66.css 動畫和 js 動畫的差異
參考答案:
1.代碼復雜度,js 動畫代碼相對復雜一些 2.動畫運行時,對動畫的控制程度上,js 能夠讓動畫,暫停,取消,終止,css 動畫不能添加事件 3.動畫性能看,js 動畫多了一個 js 解析的過程,性能不如 css 動畫好
解析:參考
參與互動
67.如何做到修改 url 參數頁面不刷新
參考答案:
HTML5 引入了 history.pushState() 和 history.replaceState() 方法,它們分別可以添加和修改歷史記錄條目。
let stateObj = { foo: "bar"};history.pushState(stateObj, "page 2", "bar.html");
假設當前頁面為 foo.html ,執行上述代碼后會變為 bar.html ,點擊瀏覽器后退,會變為 foo.html ,但瀏覽器并不會刷新。 pushState() 需要三個參數: 一個狀態對象, 一個標題 (目前被忽略), 和 (可選的) 一個 URL.讓我們來解釋下這三個參數詳細內容:
參與互動
68.數組方法 pop() push() unshift() shift()
參考答案:
參與互動
69.事件綁定與普通事件有什么區別
參考答案:
參與互動
70.IE 和 DOM 事件流的區別
參考答案:
1.事件流的區別
IE 采用冒泡型事件 Netscape 使用捕獲型事件 DOM 使用先捕獲后冒泡型事件 示例:
復制代碼代碼如下:
<body> <div> <button>點擊這里</button> </div></body>
冒泡型事件模型: button->div->body (IE 事件流)
捕獲型事件模型: body->div->button (Netscape 事件流)
DOM 事件模型: body->div->button->button->div->body (先捕獲后冒泡)
2.事件偵聽函數的區別
IE 使用:
[Object].attachEvent("name_of_event_handler", fnHandler); //綁定函數[Object].detachEvent("name_of_event_handler", fnHandler); //移除綁定
DOM 使用:
[Object].addEventListener("name_of_event", fnHandler, bCapture); //綁定函數[Object].removeEventListener("name_of_event", fnHandler, bCapture); //移除綁定
bCapture 參數用于設置事件綁定的階段,true 為捕獲階段,false 為冒泡階段。
參與互動
歡迎分享轉載→http://www.avcorse.com/read-238661.html
Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖