目錄
 No1.語法與型別
 No2.資料結構與型別  
 No3.控制流程與錯誤處理
#  作用:塊表達式一般用於控制流,像if、for、while。在block中定義的變數實際上是包含在方法或全域中,變數的影響超出了區塊作用域的範圍。
首頁 web前端 js教程 面試開發常用的 JavaScript 知識點總結

面試開發常用的 JavaScript 知識點總結

Feb 23, 2017 pm 01:17 PM


 No1.語法與型別

  1.宣告定義

  變數類型:var,定義變數;let,定義區塊域(scope)本地變數;const,定義只讀常數。

  變數格式:以字母、底線「_」或$符號開頭,大小寫敏感。

  變數賦值:宣告但未賦值的變數在使用時值為undefined,未宣告的變數直接使用會拋異常。

  未賦值變數作計算:結果為NaN。例如:

var x, y = 1;
console.log(x + y); //结果为NaN,因为x没有赋值。
登入後複製

  2.作用域

  變數作用域:在ES6之前沒有區塊宣告域,變數作用於函數區塊或全域。如下面的程式碼輸入的x為5。

if (true) {
var x = 5;
}
console.log(x); // 5
登入後複製

  ES6變數作用域:ES6支援區塊作用域,但需要使用let宣告變數。下面的程式碼輸出結果拋出異常。

f (true) {
let y = 5;
}
console.log(y); // ReferenceError: y is not defined1234
登入後複製

  變數上浮:在一個方法或全域程式碼中,我們在生命變數之前使用變數時並沒有拋異常,而是回傳undefined。這是因為javascript自動把變數的宣告上浮到函數或是全域的最前面。如下面的程式碼:

/**
* 全局变量上浮
*/
console.log(x === undefined); // logs "true"
var x = 3;

/**
* 方法变量上浮
*/
var myvar = "my value";
// 打印变量myvar结果为:undefined
(function() {
console.log(myvar); // undefined
var myvar = "local value";
})();
登入後複製

  上面程式碼和下面程式碼是等價的:

/**
* 全局变量上浮
*/
var x;
console.log(x === undefined); // logs "true"
x = 3;

/**
* 方法变量上浮
*/
var myvar = "my value";
(function() {
var myvar;
console.log(myvar); // undefined
myvar = "local value";
})();
登入後複製

  全域變數:在頁面中,全域物件是window,所以我們存取全域變數可透過window. variable。例如:

version = "1.0.0";
console.log(window.version); //输出1.0.0
登入後複製

 No2.資料結構與型別  

  1.資料型別

  6個基礎型別:Boolean(true或false)、null (js大小寫敏感,和Null、NULL是有區別的)、undefined、Number、String、Symbol(標記唯一和不可變)

  一個物件類型:object。

  object和function:物件作為值的容器,函數作為應用程式的過程。

  2.資料轉換

  函數:字串轉換為數字可使用parseInt和parseFloat方法。

  parseInt:函數簽章為parseInt(string, radix),radix是2-36的數字表示數字基數,例如十進位或十六進位。傳回結果為integer或NaN,例如下方輸出結果都為15。

parseInt("0xF", 16);
parseInt("F", 16);
parseInt("17", 8);
parseInt(021, 8);
parseInt("015", 10);
parseInt(15.99, 10);
arseInt("15,123", 10);
parseInt("FXX123", 16);
parseInt("1111", 2);
parseInt("15*3", 10);
parseInt("15e2", 10);
parseInt("15px", 10);
登入後複製

  parseFloat:函數簽名為parseFloat(string),傳回結果為數字或NaN。例如:

parseFloat("3.14"); //返回数字
parseFloat("314e-2"); //返回数字
parseFloat("more non-digit characters"); //返回NaN
登入後複製

  3.資料類型文字化

  文字化類型:Array、Boolean、Floating-point 、integers、Object、RegExp、String。

  Array中額外的逗號情況:["Lion", , "Angel"],長度為3,[1]的值為undefiend。 ['home', , 'school', ],最後一個逗號省略所以長度為3。 [ , 'home', , 'school'],長度為4。 ['home', , 'school', , ],長度為4。

  integer整數:整數可以表達為十進制、八進制、十六進制、二進制。例如:

0, 117 and -345 //十进制
015, 0001 and -0o77 //八进制
0x1123, 0x00111 and -0xF1A7 //十六进制
0b11, 0b0011 and -0b11 1234 //二进制
登入後複製

  浮點數:[(+|-)][digits][.digits][(E|e)[(+|-)]digits]。例如:

3.1415926,-.123456789,-3.1E+12(3100000000000),.1e-23(1e-24)
登入後複製

  物件:物件的屬性取得值可透過「.屬性」或「[屬性名稱]」取得。例如:

var car = { manyCars: {a: "Saab", "b": "Jeep"}, 7: "Mazda" };
console.log(car.manyCars.b); // Jeep
console.log(car[7]); // Mazda
登入後複製

  物件屬性:屬性名稱可以是任意字串或空字串,無效的名字可透過引號包含起來。複雜的名字不能透過.獲取,但可以透過[]獲取。例如:

var unusualPropertyNames = {
"": "An empty string",
"!": "Bang!"
}
console.log(unusualPropertyNames.""); // SyntaxError: Unexpected string
console.log(unusualPropertyNames[""]); // An empty string
console.log(unusualPropertyNames.!); // SyntaxError: Unexpected token !
console.log(unusualPropertyNames["!"]); // Bang!
登入後複製

  轉意字元:下面的字串輸出結果包含了雙引號,因為使用了轉意符號“\"”。

var quote = "He read \"The Cremation of Sam McGee\" by R.W. Service.";
console.log(quote);
//输出:He read "The Cremation of Sam McGee" by R.W. Service.1。
登入後複製

  字串換行法:直接在字符序列結束時新增“\”,如下程式碼所示:

var str = "this string \
is broken \
across multiple\
lines."
console.log(str); // this string is broken across multiplelines.
登入後複製

 No3.控制流程與錯誤處理

  1.區塊表達式

#  作用:塊表達式一般用於控制流,像if、for、while。在block中定義的變數實際上是包含在方法或全域中,變數的影響超出了區塊作用域的範圍。

  ES6之後有區塊域範圍:在ES6中,我們可以把區塊域宣告var改成let,讓變數只作用域block範圍。

##  判斷為false的特殊值:false、undefined、null、0、NaN、""。   簡單boolean和物件Boolean類型:簡單boolean類型的false和true與物件Boolean類型的false和true是有差別,兩者是不相等的。 ##  拋出異常語法:拋異常可以是任意型別。 #  關鍵字:使用try{}catch(e){}finally{}語法,和C#語法相似。回傳值都是finally的return。

function f() {
    try {
        console.log(0);
        throw "bogus";
    } catch(e) {
        console.log(1);
        return true; // 返回语句被暂停,直到finally执行完成
        console.log(2); // 不会执行的代码
    } finally {
        console.log(3);
        return false; //覆盖try.catch的返回
        console.log(4); //不会执行的代码
    }
    // "return false" is executed now 
    console.log(5); // not reachable
}
f(); // 输出 0, 1, 3; 返回 false
登入後複製

  finally吞并异常:如果finally有return并且catch中有throw异常。throw的异常不会被捕获,因为已经被finally的return覆盖了。如下代码所示:

function f() {
    try {
        throw "bogus";
    } catch(e) {
        console.log('caught inner "bogus"');
        throw e; // throw语句被暂停,直到finally执行完成
    } finally {
        return false; // 覆盖try.catch中的throw语句
    }
    // 已经执行了"return false"
}

try {
    f();
} catch(e) {
    //这里不会被执行,因为catch中的throw已经被finally中的return语句覆盖了
    console.log('caught outer "bogus"');
}
// 输出
// caught inner "bogus"
登入後複製

  系统Error对象:我们可以直接使用Error{name, message}对象,例如:throw (new Error('The message'));

 以上就是面试开发常用的 JavaScript 知识点总结的内容,更多相关内容请关注PHP中文网(www.php.cn)! 


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1317
25
PHP教程
1268
29
C# 教程
1244
24
如何使用WebSocket和JavaScript實現線上語音辨識系統 如何使用WebSocket和JavaScript實現線上語音辨識系統 Dec 17, 2023 pm 02:54 PM

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術 WebSocket與JavaScript:實現即時監控系統的關鍵技術 Dec 17, 2023 pm 05:30 PM

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統 如何利用JavaScript和WebSocket實現即時線上點餐系統 Dec 17, 2023 pm 12:09 PM

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統 如何使用WebSocket和JavaScript實現線上預約系統 Dec 17, 2023 am 09:39 AM

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

JavaScript與WebSocket:打造高效率的即時天氣預報系統 JavaScript與WebSocket:打造高效率的即時天氣預報系統 Dec 17, 2023 pm 05:13 PM

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

簡易JavaScript教學:取得HTTP狀態碼的方法 簡易JavaScript教學:取得HTTP狀態碼的方法 Jan 05, 2024 pm 06:08 PM

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

javascript如何使用insertBefore javascript如何使用insertBefore Nov 24, 2023 am 11:56 AM

用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個新的節點。這個方法需要兩個參數:要插入的新節點和參考節點(即新節點將要插入的位置的節點)。

JavaScript與WebSocket:打造高效率的即時影像處理系統 JavaScript與WebSocket:打造高效率的即時影像處理系統 Dec 17, 2023 am 08:41 AM

JavaScript是一種廣泛應用於Web開發的程式語言,而WebSocket則是一種用於即時通訊的網路協定。結合二者的強大功能,我們可以打造一個高效率的即時影像處理系統。本文將介紹如何利用JavaScript和WebSocket來實作這個系統,並提供具體的程式碼範例。首先,我們需要明確指出即時影像處理系統的需求和目標。假設我們有一個攝影機設備,可以擷取即時的影像數

See all articles