JS基礎理論相關知識

来源:https://www.cnblogs.com/zqw111/archive/2019/07/02/11122018.html
-Advertisement-
Play Games

1.XHTML和HTML有什麼區別 HTML是一種基本的WEB網頁設計語言,XHTML是一個基於XML的置標語言最主要的不同:XHTML 元素必須被正確地嵌套。XHTML 元素必須被關閉。標簽名必須用小寫字母。XHTML 文檔必須擁有根元素。2.什麼是語義化的HTML? 直觀的認識標簽 對於搜索引擎 ...


1.XHTML和HTML有什麼區別

HTML是一種基本的WEB網頁設計語言,XHTML是一個基於XML的置標語言
最主要的不同:
XHTML 元素必須被正確地嵌套。
XHTML 元素必須被關閉。
標簽名必須用小寫字母。
XHTML 文檔必須擁有根元素。
2.什麼是語義化的HTML?

直觀的認識標簽 對於搜索引擎的抓取有好處,用正確的標簽做正確的事情!
html語義化就是讓頁面的內容結構化,便於對瀏覽器、搜索引擎解析;
在沒有樣式CCS情況下也以一種文檔格式顯示,並且是容易閱讀的。搜索引擎的爬蟲依賴於標記來確定上下文和各個關鍵字的權重,利於SEO。
使閱讀源代碼的人對網站更容易將網站分塊,便於閱讀維護理解。
3.常見的瀏覽器內核有哪些?
Trident內核:IE,MaxThon,TT,The World,360,搜狗瀏覽器等。[又稱MSHTML]Gecko內核:Netscape6及以上版本,FF,MozillaSuite/SeaMonkey等
Presto內核:Opera7及以上。      [Opera內核原為:Presto,現為:Blink;]Webkit內核:Safari,Chrome等。   [ Chrome的:Blink(WebKit的分支)]
4.HTML5有哪些新特性、移除了那些元素?如何處理HTML5新標簽的瀏覽器相容問題?如何區分 HTML 和HTML5?

HTML5 現在已經不是 SGML 的子集,主要是關於圖像,位置,存儲,多任務等功能的增加。
繪畫 canvas
用於媒介回放的 video 和 audio 元素
本地離線存儲 localStorage 長期存儲數據,瀏覽器關閉後數據不丟失;
sessionStorage 的數據在瀏覽器關閉後自動刪除
語意化更好的內容元素,比如 article、footer、header、nav、section
表單控制項,calendar、date、time、email、url、search
新的技術webworker, websockt, Geolocation
移除的元素

https://www.jkys120.com/article/95306/
純表現的元素:basefont,big,center,font, s,strike,tt,u;
對可用性產生負面影響的元素:frame,frameset,noframes;
支持HTML5新標簽:
IE8/IE7/IE6支持通過document.createElement方法產生的標簽,
可以利用這一特性讓這些瀏覽器支持HTML5新標簽,
瀏覽器支持新標簽後,還需要添加標簽預設的樣式:
5.請描述一下 cookies,sessionStorage 和 localStorage 的區別?

cookie在瀏覽器和伺服器間來回傳遞。 sessionStorage和localStorage不會
sessionStorage和localStorage的存儲空間更大;
sessionStorage和localStorage有更多豐富易用的介面;
sessionStorage和localStorage各自獨立的存儲空間;
6.如何實現瀏覽器內多個標簽頁之間的通信?

調用localstorge、cookies等本地存儲方式
7.HTML5 為什麼只需要寫 !DOCTYPE HTML?

HTML5 不基於 SGML,因此不需要對DTD進行引用,但是需要doctype來規範瀏覽器的行為(讓瀏覽器按照它們應該的方式來運行);而HTML4.01基於SGML,所以需要對DTD進行引用,才能告知瀏覽器文檔所使用的文檔類型。
8.Doctype作用?標準模式與相容模式各有什麼區別?

!DOCTYPE聲明位於位於HTML文檔中的第一行,處於html 標簽之前。告知瀏覽器的解析器用什麼文檔標準解析這個文檔。DOCTYPE不存在或格式不正確會導致文檔以相容模式呈現。
標準模式的排版 和JS運作模式都是以該瀏覽器支持的最高標準運行。在相容模式中,頁面以寬鬆的向後相容的方式顯示,模擬老式瀏覽器的行為以防止站點無法工作。
9.Doctype? 嚴格模式與混雜模式-如何觸發這兩種模式,區分它們有何意義?
用於聲明文檔使用那種規範(html/Xhtml)一般為 嚴格 過度 基於框架的html文檔。
加入XMl聲明可觸發,解析方式更改為IE5.5 擁有IE5.5的Bug。

10.請描述一下 cookies,sessionStorage 和 localStorage 的區別?

cookie在瀏覽器和伺服器間來回傳遞。 sessionStorage和localStorage不會
sessionStorage和localStorage的存儲空間更大;
sessionStorage和localStorage有更多豐富易用的介面;
sessionStorage和localStorage各自獨立的存儲空間;
11.如何實現瀏覽器內多個標簽頁之間的通信?

調用localstorge、cookies等本地存儲方式

CSS相關問題
1.CSS實現垂直水平居中

一道經典的問題,實現方法有很多種,以下是其中一種實現:
HTML結構:

<div class=”wrapper”>
    <div class=”content”></div>
</div>

CSS:

.wrapper{position:relative;}
    .content{
        
        width:200px;
        height:200px;
        position: absolute;        //父元素需要相對定位
        top: 50%;
        left: 50%;
        margin-top:-100px ;   //二分之一的height,width
        margin-left: -100px;
    }

2.display有哪些值?說明他們的作用。

block         塊類型。預設寬度為父元素寬度,可設置寬高,換行顯示。
  none          預設值。象行內元素類型一樣顯示。
  inline        行內元素類型。預設寬度為內容寬度,不可設置寬高,同行顯示。
  inline-block  預設寬度為內容寬度,可以設置寬高,同行顯示。
  list-item     象塊類型元素一樣顯示,並添加樣式列表標記。
  table         此元素會作為塊級表格來顯示。
  inherit       規定應該從父元素繼承 display 屬性的值。

3.行內元素有哪些?塊級元素有哪些?CSS的盒模型?
塊級元素:div,p,h1,form,ul,li;
行內元素 : span>,a,label,input,img,strong,em;
CSS盒模型:內容,border ,margin,padding

4.CSS引入的方式有哪些? link和@import的區別是?
內聯 內嵌 外鏈 導入
區別 :同時載入
前者無相容性,後者CSS2.1以下瀏覽器不支持
Link 支持使用javascript改變樣式,後者不可

5.CSS選擇符有哪些?哪些屬性可以繼承?優先順序演算法如何計算?內聯和important哪個優先順序高?
標簽選擇符 類選擇符 id選擇符
繼承不如指定 Id>class>標簽選擇
後者優先順序高
6.CSS清除浮動的幾種方法(至少兩種)

使用帶clear屬性的空元素
使用CSS的overflow屬性;
使用CSS的:after偽元素;
使用鄰接元素處理;
7.CSS居中(包括水平居中和垂直居中)

內聯元素居中方案
水平居中設置:
1.行內元素

設置 text-align:center;
2.Flex佈局

設置display:flex;justify-content:center;(靈活運用,支持Chroime,Firefox,IE9+)
垂直居中設置:
1.父元素高度確定的單行文本(內聯元素)

設置 height = line-height;
2.父元素高度確定的多行文本(內聯元素)

a:插入 table (插入方法和水平居中一樣),然後設置 vertical-align:middle;
b:先設置 display:table-cell 再設置 vertical-align:middle;
塊級元素居中方案
水平居中設置:
1.定寬塊狀元素
設置 左右 margin 值為 auto;

2.不定寬塊狀元素

a:在元素外加入 table 標簽(完整的,包括 table、tbody、tr、td),該元素寫在 td 內,然後設置 margin 的值為 auto;
b:給該元素設置 displa:inine 方法;
c:父元素設置 position:relative 和 left:50%,子元素設置 position:relative 和 left:50%;
垂直居中設置:

使用position:absolute(fixed),設置left、top、margin-left、margin-top的屬性;
利用position:fixed(absolute)屬性,margin:auto這個必須不要忘記了;
利用display:table-cell屬性使內容垂直居中;
使用css3的新屬性transform:translate(x,y)屬性;
使用:before元素;
8.在書寫高效 CSS 時會有哪些問題需要考慮?
reset。參照上題“描述下 “reset” CSS 文件的作用和使用它的好處”的答案。
規範命名。尤其對於沒有語義化的html標簽,例如div,所賦予的class值要特別註意。
抽取可重用的部件,註意層疊樣式表的“優先順序”。

 

JS相關問題

1.談一談JavaScript作用域鏈
當執行一段JavaScript代碼(全局代碼或函數)時,JavaScript引擎會創建為其創建一個作用域又稱為執行上下文(Execution Context),在頁面載入後會首先創建一個全局的作用域,然後每執行一個函數,會建立一個對應的作用域,從而形成了一條作用域鏈。每個作用域都有一條對應的作用域鏈,鏈頭是全局作用域,鏈尾是當前函數作用域。

作用域鏈的作用是用於解析標識符,當函數被創建時(不是執行),會將this、arguments、命名參數和該函數中的所有局部變數添加到該當前作用域中,當JavaScript需要查找變數X的時候(這個過程稱為變數解析),它首先會從作用域鏈中的鏈尾也就是當前作用域進行查找是否有X屬性,如果沒有找到就順著作用域鏈繼續查找,直到查找到鏈頭,也就是全局作用域鏈,仍未找到該變數的話,就認為這段代碼的作用域鏈上不存在x變數,並拋出一個引用錯誤(ReferenceError)的異常。

2.如何理解JavaScript原型鏈
JavaScript中的每個對象都有一個prototype屬性,我們稱之為原型,而原型的值也是一個對象,因此它也有自己的原型,這樣就串聯起來了一條原型鏈,原型鏈的鏈頭是object,它的prototype比較特殊,值為null。

原型鏈的作用是用於對象繼承,函數A的原型屬性(prototype property)是一個對象,當這個函數被用作構造函數來創建實例時,該函數的原型屬性將被作為原型賦值給所有對象實例,比如我們新建一個數組,數組的方法便從數組的原型上繼承而來。

當訪問對象的一個屬性時, 首先查找對象本身, 找到則返回; 若未找到, 則繼續查找其原型對象的屬性(如果還找不到實際上還會沿著原型鏈向上查找, 直至到根). 只要沒有被覆蓋的話, 對象原型的屬性就能在所有的實例中找到,若整個原型鏈未找到則返回undefined

 

3.JavaScript如何實現繼承?
構造繼承
原型繼承
實例繼承
拷貝繼承
原型prototype機制或apply和call方法去實現較簡單,建議使用構造函數與原型混合方式。
        function Parent(){
            this.name = ‘wang’;
        }

        function Child(){
            this.age = 28;
        }
        Child.prototype = new Parent();//繼承了Parent,通過原型
        var demo = new Child();
        alert(demo.age);
        alert(demo.name);//得到被繼承的屬性

4.JavaScript的typeof返回哪些數據類型

Object number function boolean underfind;
5.例舉3種強制類型轉換和2種隱式類型轉換?

強制(parseInt,parseFloat,number)隱式(== – ===);
6.split() join() 的區別

前者是切割成數組的形式,後者是將數組轉換成字元串

7.數組方法pop() push() unshift() shift()

Push()尾部添加 pop()尾部刪除
Unshift()頭部添加 shift()頭部刪除

8.IE和DOM事件流的區別
執行順序不一樣、
參數不一樣
事件加不加on
this指向問題

9.ajax請求的時候get 和post方式的區別
一個在url後面 一個放在虛擬載體裡面
有大小限制
安全問題
應用不同 一個是論壇等只需要請求的,一個是類似修改密碼的

https://www.jkys120.com/article/95306/

10.IE和標準下有哪些相容性的寫法
Var ev = ev || window.event
document.documentElement.clientWidth || document.body.clientWidth
Var target = ev.srcElement||ev.target

11.ajax請求時,如何解釋json數據

使用eval parse,鑒於安全性考慮 使用parse更靠譜;
12.事件委托是什麼

讓利用事件冒泡的原理,讓自己的所觸發的事件,讓他的父元素代替執行!
13.閉包是什麼,有什麼特性,對頁面有什麼影響?簡要介紹你理解的閉包
閉包就是能夠讀取其他函數內部變數的函數。
14.添加 刪除 替換 插入到某個接點的方法

obj.appendChidl()
obj.innersetBefore
obj.replaceChild
obj.removeChild
15..”==”和“===”的不同

前者會自動轉換類型,後者不會

16.編寫一個b繼承a的方法

function A(name){
    this.name = name;
    this.sayHello = function(){alert(this.name+” say Hello!”);};
}
function B(name,id){
    this.temp = A;
    this.temp(name);        //相當於new A();
    delete this.temp;       
     this.id = id;   
    this.checkId = function(ID){alert(this.id==ID)};
}

17.如何阻止事件冒泡和預設事件

function stopBubble(e)
{
    if (e && e.stopPropagation)
        e.stopPropagation()
    else
        window.event.cancelBubble=true
}
return false

18.下麵程式執行後彈出什麼樣的結果?

function fn() {
    this.a = 0;
    this.b = function() {
        alert(this.a)
    }
}
fn.prototype = {
    b: function() {
        this.a = 20;
        alert(this.a);
    },
    c: function() {
        this.a = 30;
        alert(this.a);
    }
}
var myfn = new fn();
myfn.b();
myfn.c();

19.談談This對象的理解。

this是js的一個關鍵字,隨著函數使用場合不同,this的值會發生變化。
但是有一個總原則,那就是this指的是調用函數的那個對象。
this一般情況下:是全局對象Global。 作為方法調用,那麼this就是指這個對象

20.下麵程式的結果

function fun(n,o) {
  console.log(o)
  return {
    fun:function(m){
      return fun(m,n);
    }
  };
}
var a = fun(0);  a.fun(1);  a.fun(2);  a.fun(3);
var b = fun(0).fun(1).fun(2).fun(3);
var c = fun(0).fun(1);  c.fun(2);  c.fun(3);

//答案:

//a: undefined,0,0,0
//b: undefined,0,1,2
//c: undefined,0,1,1

21.下麵程式的輸出結果

    1. var name = 'World!';
    2. (function () {
    3. if (typeof name === 'undefined') {
    4. var name = 'Jack';
    5. console.log('Goodbye ' + name);
    6. } else {
    7. console.log('Hello ' + name);
    8. }
    9. })();

22.瞭解Node麽?Node的使用場景都有哪些?

高併發、聊天、實時消息推送

23.介紹下你最常用的一款框架

jquery,rn,angular等;

24.對於前端自動化構建工具有瞭解嗎?簡單介紹一下

Gulp,Grunt等;
25.說一下什麼是JavaScript的同源策略?

一段腳本只能讀取來自於同一來源的視窗和文檔的屬性,這裡的同一來源指的是主機名、協議和埠號的組合

代碼相關的問題

1.說說最近最流行的一些東西吧?常去哪些網站?

Node.js、MVVM、React-native,Angular,Weex等
CSDN,Segmentfault,博客園,掘金,Stackoverflow,伯樂線上等

2.如果今年你打算熟練掌握一項新技術,那會是什麼?

via開發單頁webapp的技術。
SAP能夠是頁面與頁面之間無縫連接,避免出現白頁,且帶有動態效果,提高用戶體驗。同時SAP,有JavaScript渲染頁面,然後在從伺服器獲取小量的數據顯示,如此反覆,請求的數據無需要伺服器處理,減少伺服器負荷。
SAP對技術要求高。要考慮首屏載入事件過長;動畫效果要考慮低端手機;垃圾收集,需要自己釋放資源,避免頁面變卡。


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

-Advertisement-
Play Games
更多相關文章
  • 如報紙、雜誌、報告等其他媒介上看到過圖。通常,圖是由頁面上的文本引述出。 在HTML5出現之前,沒有專門實現這個目的的元素,因此一些開發人員想出了他們自己的解決辦法(通常會使用不那麼理想的、沒有語義的div元素)。 通過引入figure和figcaption,HTML5改變了這種情況。 圖可以是圖表 ...
  • Vue 函數封裝 ...
  • DOM(屬性節點) 屬性節點沒有過參加家族關係中,其專用選擇器:attributes,返回值為對象的形式,它的鍵是索引值,也就是用對象模擬了一個偽數組,DOM中選擇器返回的都是偽數組(可以使用數組的形式遍歷,操作。但是不能使用數組的方法),下麵是屬性節點的操作 <div class="box" ti ...
  • 301:永久重定向 302:臨時重定向 相同點:輸入網址A,都會重定向到網址B 不同點: ① 301:舊地址A的資源不可訪問了(永久移除),重定向到網址B,搜索引擎會抓取網址B的內容,同時將網址保存為B網址。 ② 302:舊地址A的資源仍可訪問,這個重定向只是臨時從舊地址A跳轉到B地址,這時搜索引擎 ...
  • js api 之 fetch、querySelector、form、atob及btoa 轉載請註明出處: "https://www.cnblogs.com/funnyzpc/p/11095862.html" js api即為JavaScript內置函數,本章就說說幾個比較實用的內置函數,內容大致如下 ...
  • 本例參考並改進自:https://www.jianshu.com/p/2961d9c317a3 大家可以一起學習!! ...
  • 基本調用: 自動關閉: 銷毀Loading Dom節點: ...
  • 如果只需要知道一種編程語言就可以構建一個全棧的應用程式,是不是特別了不起?Ryan Dahl為了把這個想法成為現實,創造了node.js。Node.js是建立在Chrome強勁的V8 JavaScript引擎上的伺服器端框架。雖然最初是用C++編寫的,但是應用程式通過JavaScript運行。 這樣 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...