日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一问就想不起来的问题,来看看?

發布時間:2025/7/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一问就想不起来的问题,来看看? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.js默認阻止時間冒泡的事件:

1) event.stopPropagation()阻止事件冒泡的方法,不讓時間向document上蔓延,但是默認事件仍然會執行2) event.preventDefault()阻止默認事件的方法3) return false;會同時阻止事件冒泡也會阻止默認事件復制代碼

2.邏輯代碼,可以自己打印輸出看看哦,答案在評論處

var a = [1,2]; var b = a.concat([3,4,[5,6]]); 1、請問數組b的長度是幾?復制代碼

var data = []; for(var i = 0;i<3;i++){ data[i] = function(){console.log(i);} } 2、請問data[0] = ?data[1] = ?data[2] = ?復制代碼

var z = 10; function foo(){console.log(z); } (function(funArg){var z = 20;funArg(); })(foo) console.log(z); //3、z=?復制代碼

function fact (num){ if(num<=1){ return 1}else{return num*arguments.callee(num-1)} } var anotherFact = fact; fact =null console.log(anotherFact(4));//4、(anotherFact(4)? 復制代碼

3.這里遇到了一個我這個小白看不懂的地方:arguments.callee

  • 首先,arguments是什么?
  • arguments是函數調用時,創建的一個類似的數組但又不是數組的對象,并且它存儲的是實際傳遞給函數的參數,并不局限于函數聲明的參數列表。
arguments.callee是指向參數arguments對象的函數,獲取當前函數的主體,在哪個函數中運行,就代表哪個函數,一般用于匿名函數中。所以這里的arguments.callee是實現計算階乘函數的遞歸算法,但是訪問 arguments 是個很昂貴的操作,因為它是個很大的對象,每次遞歸調用時都需要重新創建。影響現代瀏覽器的性能,還會影響閉包,謹慎使用。

4、call和Apply的區別:

  • 每個函數都包含非繼承而來的方法:call()和apply()
  • 定義:
    • apply:調用一個對象的一個方法,用另一個對象替換當前對象。

    • call:調用一個對象的一個方法,用另一個對象替換當前對象。

  • 相同點:
    • 都是在特定的作用域中調用函數,等于設置函數體內的this對象的值,以擴充函數運行的作用域。
  • 區別:
    • apply():最多只能有兩個參數:函數運行的this對象和參數數組。
      • 如果argArray不是一個有效數組或不是arguments對象,那么將導致一個
        TypeError,如果沒有提供argArray和thisObj任何一個參數,那么Global對象將用作thisObj。

語法:apply([thisObj [,argArray] ]); 復制代碼

    • call():第一個參數和apply()方法的一樣,但是傳遞給函數的參數必須列舉出來。
      • call方法可以用來代替另一個對象調用一個方法,call方法可以將一個函數的對象上下文從初始的上下文改變為thisObj指定的新對象,如果沒有提供thisObj參數,那么Global對象被用于thisObj。

語法:call([thisObject[,arg1 [,arg2 [,...,argn]]]]); 復制代碼

5.瀏覽器的事件流:


  • 事件冒泡
  • 事件開始時由最具體的元素(文檔中嵌套層次最深的那個節點)接收,然后逐級向上傳播到較為不具體的節點
  • 事件捕獲
  • 事件捕獲的思想是不太具體的節點應該更早接收到事件,而最具體的節點應該最后接收到事件。事件捕獲的用意在于在事件到達預定目標之前就捕獲它
  • DOM事件流
  • 處于捕獲階段往事件冒泡階段之間
  • 6、提高web頁面性能

    • 減少http請求:
      • 圖片加載也會產品http請求,所以建議盡量減少使用網絡圖片,如果圖片比較多, 可以使用字體圖標
    • 使用CDN地址:
      • ?CDN(內容發布網絡)是一組分布在多個不同地理位置的Web服務器,用于更加有效地向用戶發布內容。在優化性能時,向特定用戶發布內容的服務器的選擇基于對網絡慕課擁堵的測量。
      • CDN還可以進行數據備份、擴展存儲能力,進行緩存,同時有助于緩和Web流量峰值壓力。
    • 將樣式表放在頭部
      • 減少頁面首屏出現的時間,使頁面內容逐步呈現,改善用戶體驗,防止“白屏”。能夠盡快顯示內容,為用戶提供可視化的回饋,這對網速慢的用戶來說是很重要的
    • 將腳本放在底部
      • 和樣式表相同,放在底部會減少首屏出現的時間。js的下載和執行會阻塞Dom樹的構建(嚴謹地說是中斷了Dom樹的更新),所以script標簽放在首屏范圍內的HTML代碼段里會截斷首屏的內容
    • 避免CSS表達式
      • CSS表達式是動態設置CSS屬性的一種強大并且危險的方式,它受到了IE5以及之后版本、IE8之前版本的支持。
    • 使用外部JavaScript和CSS
      • 內聯腳本或者樣式可以減少HTTP請求,按理來說可以提高頁面加載的速度。然而在實際情況中,當腳本或者樣式是從外部引入的文件,瀏覽器就有可能緩存它們,從而在以后加載的時候能夠直接使用緩存,而HTML文檔的大小減小,從而提高加載速度。
    7.HTTPS和HTTP的區別:
    • 定義:
      • https:是以安全為目標的HTTP的通道,簡單講是HTTP的安全版。HTTPS的安全是以SSL為基礎,因此加密的詳細內容就需要SSL。
      • http:超文本傳輸協議,是一種詳細規定了瀏覽器和萬維網服務器之間互相通信的規則,通過因特網傳送萬維網文檔的數據傳送協議。
    • 區別:
      • https:https協議需要到ca申請證書,一般免費證書很少,需要交費。https 則是具有安全性的ssl加密傳輸協議。
      • http:http是超文本傳輸協議,信息是明文傳輸。




    總結

    以上是生活随笔為你收集整理的一问就想不起来的问题,来看看?的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。