撩課-Web大前端每天5道面試題-Day2

来源:https://www.cnblogs.com/gxq666/archive/2018/11/28/10030165.html
-Advertisement-
Play Games

1.偽類與偽元素的區別? 1) 定義區別 2) 語法區別 3) 偽類/偽元素一覽表 2. css樣式優先順序,各自的權重 3.常見的DOM操作有哪些? 主要操作包括:查找節點,新建節點,添加節點,刪除節點,修改節點;開發中,我們用到最多的是element類型,用於表現HTML元素,提供了對元素標簽名、 ...


1.偽類與偽元素的區別?

1) 定義區別

偽類
      偽類用於選擇DOM樹之外的信息,或是不能用簡單選擇器進行表示的信息。
前者包含那些匹配指定狀態的元素,比如:visited,:active;後者包含那些滿足一定邏輯條件的DOM樹中的元素,比如:first-child,:first-of-type,:target。

偽元素
   偽元素為DOM樹沒有定義的虛擬元素。不同於其他選擇器,它不以元素為最小選擇單元,它選擇的是元素指定內容。
比如::before表示選擇元素內容的之前內容,也就是"";::selection表示選擇元素被選中的內容。      

  

2) 語法區別

  在CSS3中,偽類與偽元素在語法上也有所區別,偽元素修改為以::開頭。
   但因為歷史原因,瀏覽器對以:開頭的偽元素也繼續支持,但建議規範書寫為::開頭。

  

3) 偽類/偽元素一覽表

<偽類如下>
 
:active 選擇正在被激活的元素  1
:hover  選擇被滑鼠懸浮著元素  1
:link   選擇未被訪問的元素   1
:visited    選擇已被訪問的元素   1
:first-child    選擇滿足是其父元素的第一個子元素的元素 2
:lang   選擇帶有指定 lang 屬性的元素   2
:focus  選擇擁有鍵盤輸入焦點的元素   2
:enable 選擇每個已啟動的元素  3
:disable    選擇每個已禁止的元素  3
:checked    選擇每個被選中的元素  3
:target 選擇當前的錨點元素   3

<偽元素如下>
 
::first-letter  選擇指定元素的第一個單詞    1
::first-line    選擇指定元素的第一行  1
::after 在指定元素的內容後面插入內容  2
::before    在指定元素的內容前面插入內容  2
::selection 選擇指定元素中被用戶選中的內容 3

  

2. css樣式優先順序,各自的權重

優先順序別:
 
通用選擇器(*) < 元素(類型)選擇器 < 類選擇器 < 屬性選擇器 < 偽類 < ID 選擇器 < 內聯樣式
 
權重:

第一等:代表內聯樣式,如: style=””,權值為1000。
第二等:代表ID選擇器,如:#content,權值為100。
第三等:代表偽類和屬性選擇器,如.content,權值為10。
第四等:代表類型選擇器和偽元素選擇器,如div p,權值為1。

 

3.常見的DOM操作有哪些?

主要操作包括:
查找節點,新建節點,添加節點,刪除節點,修改節點;
開發中,我們用到最多的是element類型,
用於表現HTML元素,提供了對元素標簽名、子節點及特性的訪問。

1)DOM常用操作舉例:

// 查找節點
document.getElementById('id屬性值'); // 返回擁有指定id的第一個對象的引用        
document.getElementsByClassName('class屬性值'); // 返回擁有指定class的對象集合

 

2)新建節點:

// 創建新的元素節點
document.createElement('元素名');
// 創建新的屬性節點 
document.createAttribute('屬性名');
// 創建新的文本節點
document.createTextNode('文本內容');
// 創建新的註釋節點
document.createComment('註釋節點');

 

3)添加節點:

var element = document.getElementsByTagName('p')[0];
element.innerHTML='新增文本內容'; //插入文本內容

 

4)刪除節點:

parentNode.removeChild( existingChild ); //刪除已有的子節點,返回值為刪除節點
element.removeAttribute('屬性名'); // 刪除具有指定屬性名稱的屬性,無返回值
element.removeAttributeNode( attrNode ); // 刪除指定屬性,返回值為刪除的屬性

 

5)修改節點:

// 添加屬性節點,修改屬性值
element.setAttribute( attributeName, attributeValue );

 

6)屬性節點:

// 增添id屬性,並修改class屬性值
var element = document.getElementsByTagName('p')[0];

// 添加屬性節點
var attr = document.createAttribute('id');
attr.value = 'idValue';
element.setAttributeNode(attr);

// 修改屬性值
var attr = document.createAttribute('class');
attr.value = 'classNewValue';
element.setAttributeNode(attr);

 

7)DOM事件:

允許 JavaScript 對 HTML 事件作出反應,主要包括:

onclick 事件——當用戶點擊時
onload 事件——用戶進入
onunload 事件——用戶離開
onmouseover事件——滑鼠移入
onmouseout事件——滑鼠移出
onmousedown事件——滑鼠按下
onmouseup 事件——滑鼠抬起

 

4.判斷數據類型有哪些方法?

1)typeof

typeof 是一個操作符,其右側跟一個一元表達式,並返回這個表達式的數據類型。
返回的結果用該類型的字元串(全小寫字母)形式表示,
包括以下 7 種:number、boolean、symbol、string、object、undefined、function 等。

 

2) instanceof

instanceof 是用來判斷 A 是否為 B 的實例,
表達式為:A instanceof B,如果 A 是 B 的實例,則返回 true,否則返回 false。 
在這裡需要特別註意的是:instanceof 檢測的是原型

 

3) constructor

當一個函數 F被定義時,JS引擎會為F添加 prototype 原型,
然後再在 prototype上添加一個 constructor 屬性,並讓其指向 F 的引用。

 

4)toString

toString() 是 Object 的原型方法,調用該方法,預設返回當前對象的 [[Class]]點擊並拖拽以移動 。這是一個內部屬性,其格式為 [object Xxx] ,其中 Xxx 就是對象的類型。對於 Object 對象,直接調用 toString()  就能返回 [object Object] 。而對於其他對象,則需要通過 call / apply 來調用才能返回正確的類型信息。

5.介紹一下 JS 的基本數據類型?

Undefined、Null、Boolean、Number、String

  

6.介紹一下 JS 有哪些內置對象?

Object 是 JavaScript 中所有對象的父對象; 
數據封裝類對象:Object、Array、Boolean、Number、String 
其他對象:Function、Argument、Math、Date、RegExp、Error

 

7.push()-pop()-shift()-unshift()分別是什麼功能?

// push 方法
// 將新元素添加到一個數組中,並返回數組的新長度值。
var a=[1,2,3,4];
a.push(5);

// pop 方法
// 移除數組中的最後一個元素並返回該元素。
var a=[1,2,3,4];
a.pop();

// shift 方法
// 移除數組中的第一個元素並返回該元素。
var a=[1,2];
a.shift();

// unshift 方法
// 將指定的元素插入數組開始位置並返回該數組。
var a=[1,2];
a.unshift(0);

 

8.null 和 undefined 有何區別?

1) null 表示一個對象被定義了,值為“空值”;
 undefined 表示不存在這個值。

typeof undefined //"undefined" 
2) undefined :是一個表示"無"的原始值或者說表示"缺少值",就是此處應該有一個值,但是還沒有定義。
當嘗試讀取時會返回 undefined; 例如變數被聲明瞭,但沒有賦值時,就等於undefined。 

typeof null //"object"  null : 是一個對象(空對象, 沒有任何屬性和方法);
3) 註意: 在驗證null時,一定要使用 === ,因為 == 無法分別 null 和 undefined

 

9.new操作符具體幹了什麼?

1)  創建一個空對象,並且 this 變數引用該對象。
2)  屬性和方法被加入到 this 引用的對象中。 
3)  新創建的對象由 this 所引用。

 

10.你對 JSON 瞭解嗎?

1) JSON(JavaScript Object Notation)是一種輕量級的數據交換格式。 
2) 它是基於JavaScript的一個子集。數據格式簡單,易於讀寫,占用帶寬小。 
如:{"age":"12", "name":"back"}

 

1.偽類與偽元素的區別?

1) 定義區別

偽類
      偽類用於選擇DOM樹之外的信息,或是不能用簡單選擇器進行表示的信息。
前者包含那些匹配指定狀態的元素,比如:visited:active;後者包含那些滿足一定邏輯條件的DOM樹中的元素,比如:first-child:first-of-type,:target。

偽元素
   偽元素為DOM樹沒有定義的虛擬元素。不同於其他選擇器,它不以元素為最小選擇單元,它選擇的是元素指定內容。
比如::before表示選擇元素內容的之前內容,也就是""::selection表示選擇元素被選中的內容。                

2) 語法區別

  在CSS3中,偽類與偽元素在語法上也有所區別,偽元素修改為以::開頭。
  但因為歷史原因,瀏覽器對以:開頭的偽元素也繼續支持,但建議規範書寫為::開頭。

3) 偽類/偽元素一覽表

<偽類如下>
 
:active 選擇正在被激活的元素  1
:hover  選擇被滑鼠懸浮著元素  1
:link   選擇未被訪問的元素   1
:visited    選擇已被訪問的元素   1
:first-child    選擇滿足是其父元素的第一個子元素的元素 2
:lang   選擇帶有指定 lang 屬性的元素   2
:focus  選擇擁有鍵盤輸入焦點的元素   2
:enable 選擇每個已啟動的元素  3
:disable    選擇每個已禁止的元素  3
:checked    選擇每個被選中的元素  3
:target 選擇當前的錨點元素   3

<偽元素如下>
 
::first-letter  選擇指定元素的第一個單詞    1
::first-line    選擇指定元素的第一行  1
::after 在指定元素的內容後面插入內容  2
::before    在指定元素的內容前面插入內容  2
::selection 選擇指定元素中被用戶選中的內容 3

2. css樣式優先順序,各自的權重

優先順序別:
 
通用選擇器(*) < 元素(類型)選擇器 < 類選擇器 < 屬性選擇器 < 偽類 < ID 選擇器 < 內聯樣式
 
權重:

第一等:代表內聯樣式,如: style=””,權值為1000。
第二等:代表ID選擇器,如:#content,權值為100。
第三等:代表偽類和屬性選擇器,如.content,權值為10。
第四等:代表類型選擇器和偽元素選擇器,如div p,權值為1。

3.常見的DOM操作有哪些?

主要操作包括:
查找節點,新建節點,添加節點,刪除節點,修改節點;
開發中,我們用到最多的是element類型,
用於表現HTML元素,提供了對元素標簽名、子節點及特性的訪問。

1)DOM常用操作舉例:

// 查找節點
document.getElementById('id屬性值'); // 返回擁有指定id的第一個對象的引用        
document.getElementsByClassName('class屬性值'); // 返回擁有指定class的對象集合

2)新建節點:

// 創建新的元素節點
document.createElement('元素名');
// 創建新的屬性節點 
document.createAttribute('屬性名');
// 創建新的文本節點
document.createTextNode('文本內容');
// 創建新的註釋節點
document.createComment('註釋節點');

3)添加節點:

var element = document.getElementsByTagName('p')[0];
element.innerHTML='新增文本內容'; //插入文本內容

4)刪除節點:

parentNode.removeChild( existingChild ); //刪除已有的子節點,返回值為刪除節點
element.removeAttribute('屬性名'); // 刪除具有指定屬性名稱的屬性,無返回值
element.removeAttributeNode( attrNode ); // 刪除指定屬性,返回值為刪除的屬性

5)修改節點:

// 添加屬性節點,修改屬性值
element.setAttribute( attributeName, attributeValue );

6)屬性節點:

// 增添id屬性,並修改class屬性值
var element = document.getElementsByTagName('p')[0];

// 添加屬性節點
var attr = document.createAttribute('id');
attr.value = 'idValue';
element.setAttributeNode(attr);

// 修改屬性值
var attr = document.createAttribute('class');
attr.value = 'classNewValue';
element.setAttributeNode(attr);

7)DOM事件:

允許 JavaScript 對 HTML 事件作出反應,主要包括:

onclick 事件——當用戶點擊時
onload 事件——用戶進入
onunload 事件——用戶離開
onmouseover事件——滑鼠移入
onmouseout事件——滑鼠移出
onmousedown事件——滑鼠按下
onmouseup 事件——滑鼠抬起

4.判斷數據類型有哪些方法?

1)typeof

typeof 是一個操作符,其右側跟一個一元表達式,並返回這個表達式的數據類型。
返回的結果用該類型的字元串(全小寫字母)形式表示,
包括以下 7 種:number、boolean、symbol、string、object、undefinedfunction 等。

2) instanceof

instanceof 是用來判斷 A 是否為 B 的實例,
表達式為:A instanceof B,如果 A 是 B 的實例,則返回 true,否則返回 false。 
在這裡需要特別註意的是:instanceof 檢測的是原型

3) constructor

當一個函數 F被定義時,JS引擎會為F添加 prototype 原型,
然後再在 prototype上添加一個 constructor 屬性,並讓其指向 F 的引用。

4)toString

toString() 是 Object 的原型方法,調用該方法,預設返回當前對象的 [[Class]]點擊並拖拽以移動 。這是一個內部屬性,其格式為 [object Xxx] ,其中 Xxx 就是對象的類型。對於 Object 對象,直接調用 toString()  就能返回 [object Object] 。而對於其他對象,則需要通過 call / apply 來調用才能返回正確的類型信息。

5.介紹一下 JS 的基本數據類型?

Undefined、Null、BooleanNumberString

6.介紹一下 JS 有哪些內置對象?

Object 是 JavaScript 中所有對象的父對象; 
數據封裝類對象:ObjectArrayBooleanNumberString 
其他對象:Function、Argument、MathDateRegExpError

7.push()-pop()-shift()-unshift()分別是什麼功能?

// push 方法
// 將新元素添加到一個數組中,並返回數組的新長度值。
var a=[1,2,3,4];
a.push(5);

// pop 方法
// 移除數組中的最後一個元素並返回該元素。
var a=[1,2,3,4];
a.pop();

// shift 方法
// 移除數組中的第一個元素並返回該元素。
var a=[1,2];
a.shift();

// unshift 方法
// 將指定的元素插入數組開始位置並返回該數組。
var a=[1,2];
a.unshift(0);

8.null 和 undefined 有何區別?

1) null 表示一個對象被定義了,值為“空值”;
 undefined 表示不存在這個值。

typeof undefined //"undefined" 
2) undefined :是一個表示"無"的原始值或者說表示"缺少值",就是此處應該有一個值,但是還沒有定義。
當嘗試讀取時會返回 undefined; 例如變數被聲明瞭,但沒有賦值時,就等於undefinedtypeof null //"object"  null : 是一個對象(空對象, 沒有任何屬性和方法);
3) 註意: 在驗證null時,一定要使用 === ,因為 == 無法分別 nullundefined

9.new操作符具體幹了什麼?

1)  創建一個空對象,並且 this 變數引用該對象。
2)  屬性和方法被加入到 this 引用的對象中。 
3)  新創建的對象由 this 所引用。

10.你對 JSON 瞭解嗎?

1) JSON(JavaScript Object Notation)是一種輕量級的數據交換格式。 
2) 它是基於JavaScript的一個子集。數據格式簡單,易於讀寫,占用帶寬小。 
如:{"age":"12", "name":"back"}

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • XKZoomingView.h XKZoomingView.m USE ELSE ...
  • - (void)postRequest{ AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; // >>>>>>>> post 發送json格式數據的時候加上 manager.requestSerializer = [AFJ... ...
  • 這段代碼的關鍵主要是在我們的相對佈局以及線性佈局上面,我們首先在總體佈局里設置為線性佈局,然後再在裡面設置為相對佈局,這是一個十分常見的XML佈局模式。 廢話不多說,直接上代碼:一.activity.xml 二》main.java 其中的代碼: TextView簡介: TextView,是View的 ...
  • 證書: 證書:命名特點團隊管理 開發證書 iOS Development 不與App ID對應 表示擁有開發應用的資格 一般只需一個,通過導出p12文件,分發給其他電腦安裝; 生產證書 iOS Distribution 不與App ID對應 表示擁有發佈應用的資格 一般只需一個,可以通過導出p12文 ...
  • 主流的APP都少不了跟伺服器交互,網路請求是少不了的事情。 開源的網路請求庫,有很多,比如:AFNetworking、YTKNetwork、PPNetworkHelper、ASIHttpRequest,等等。 ...
  • 可以看出來使用兩個參數時,它的內部也是調用了3個參數的方法。 如果我們使用LayoutInflater.from(context).inflate(R.layout.recycle_foot_item,null); 則實際上是調用了LayoutInflater.from(context).infla ...
  • 我的Android studio版本是2.2版本 1.Ctrl+z是撤銷快捷鍵 2.如果Ctrl+z 掉的內容,又反悔了,快捷鍵為:Ctrl + Shift + z。 ...
  • 一,效果圖。 二,代碼。 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>javascript 變數</title> </head> <body> <script> var x = 5; var y = 6; var z = x ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...