2022最新JavaScript+jQuery筆記

来源:https://www.cnblogs.com/liyublogs/archive/2022/04/12/16136378.html
-Advertisement-
Play Games

初識JavaScript 瀏覽器執行js簡介 渲染引擎:解析css和html js引擎:編譯js代碼,逐行解析 <script type="null"> alert('我是編程語言,用來控制電腦網頁彈出你好'); alert('我是編程語言,用來控制電腦網頁彈出你好'); </script> js組 ...


初識JavaScript

瀏覽器執行js簡介

  • 渲染引擎:解析css和html
  • js引擎:編譯js代碼,逐行解析
<script type="null">
alert('我是編程語言,用來控制電腦網頁彈出你好'); alert('我是編程語言,用來控制電腦網頁彈出你好');
</script>

js組成

  1. EcmaScript:JavaScript基本語法
  2. DOM:頁面文檔對象模型(對頁面中的文檔進行操作)
  3. BOM:瀏覽器對象模型(對瀏覽器視窗做出操作)

書寫位置

1.行內式

<!-- 1.行內式的js 直接寫到元素內部 -->
    <input type="button" value="唐伯虎" onclick="alert('秋香姐')">

2.內嵌式

  • 最好放到html下部分
 <script>
        // alert('沙漠駱駝');
    </script>

3.外部

  • 結構更加易讀。
 <!-- 3.外部js寫法 雙標簽 -->
    <script src="my.js"></script>

javascript標簽中無需寫代碼,否則會被忽略!

JS中 let和var的區別

  • ES6 新增了let命令,用來聲明局部變數。它的用法類似於var,但是所聲明的變數,只在let命令所在的代碼塊內有效,而且有暫時性死區的約束。
    先看個var的常見變數提升的面試題目:
題目1:
var a = 99;            // 全局變數a
f();                   // f是函數,雖然定義在調用的後面,但是函數聲明會提升到作用域的頂部。 
console.log(a);        // a=>99,  此時是全局變數的a
function f() {
  console.log(a);      // 當前的a變數是下麵變數a聲明提升後,預設值undefined
  var a = 10;
  console.log(a);      // a => 10
}

// 輸出結果:
undefined
10
99

ES6可以用let定義塊級作用域變數

在ES6之前,我們都是用var來聲明變數,而且JS只有函數作用域和全局作用域,沒有塊級作用域,所以{}限定不了var聲明變數的訪問範圍。
例如:

{ 
  var i = 9;
} 
console.log(i);  // 9

ES6新增的let,可以聲明塊級作用域的變數。

{ 
  let i = 9;     // i變數只在 花括弧內有效!!!
} 
console.log(i);  // Uncaught ReferenceError: i is not defined

let 配合for迴圈的獨特應用

let非常適合用於 for迴圈內部的塊級作用域。JS中的for迴圈體比較特殊,每次執行都是一個全新的獨立的塊作用域,用let聲明的變數傳入到 for迴圈體的作用域後,不會發生改變,不受外界的影響。看一個常見的面試題目:

for (var i = 0; i <10; i++) {  
  setTimeout(function() {  // 同步註冊回調函數到 非同步的 巨集任務隊列。
    console.log(i);        // 執行此代碼時,同步代碼for迴圈已經執行完成
  }, 0);
}
// 輸出結果
10   共10個
// 這裡面的知識點: JS的事件迴圈機制,setTimeout的機制等

如果把 var改成 let聲明:

// i雖然在全局作用域聲明,但是在for迴圈體局部作用域中使用的時候,變數會被固定,不受外界干擾。
for (let i = 0; i < 10; i++) { 
  setTimeout(function() {
    console.log(i);    //  i 是迴圈體內局部作用域,不受外界影響。
  }, 0);
}
// 輸出結果:
0  1  2  3  4  5  6  7  8 9

let沒有變數提升與暫時性死區

用let聲明的變數,不存在變數提升。而且要求必須 等let聲明語句執行完之後,變數才能使用,不然會報Uncaught ReferenceError錯誤。

console.log(aicoder);    // 錯誤:Uncaught ReferenceError ...
let aicoder = 'aicoder.com';
// 這裡就可以安全使用aicoder

ES6 明確規定,如果區塊中存在let和const命令,這個區塊對這些命令聲明的變數,從一開始就形成了封閉作用域。凡是在聲明之前就使用這些變數,就會報錯。
總之,在代碼塊內,使用let命令聲明變數之前,該變數都是不可用的。這在語法上,稱為“暫時性死區”(temporal dead zone,簡稱 TDZ)。

let變數不能重覆聲明

let不允許在相同作用域內,重覆聲明同一個變數。否則報錯:
Uncaught SyntaxError: Identifier 'XXX' has already been declared

例如:

let a = 0;
let a = 'sss';
// Uncaught SyntaxError: Identifier 'a' has already been declared

總結

ES6的let讓js真正擁有了塊級作用域,也是向這更安全更規範的路走,雖然加了很多約束,但是都是為了讓我們更安全的使用和寫代碼。

字面量

在電腦科學中,字面量(Literal)是在電腦中描述 事/物

javascript是否寫分號結尾

  • 根據具體情況實際選擇
  • 寫和不寫都可以

javaScript輸入輸出語句

方法 說明 歸屬
alert(msg) 瀏覽器彈出警示框 瀏覽器
console.log(msg) 瀏覽器控制台列印輸出信息 瀏覽器
prompt(info) 瀏覽器彈出輸入框,用戶可以輸入 瀏覽器
doucument.write() 頁面輸出內容,識別標簽 瀏覽器
  • prompt取過來的值是字元類型的

變數

  • 屬性值:var(variable的縮寫)
  • 裝數據的盒子

變數語法拓展

  • 更新變數:變數值以最後一次賦的值為準
  • 同時聲明多個變數:聲明一個變數後,中間用逗號隔開
  • let聲明變數
    let即關鍵字(let:允許,許可,讓,要),所謂關鍵字是系統專門提供的用來聲明的變數的詞語
var myfirstname = 99,
            kjlj = 54;

聲明變數的特殊情況

情況 說明 結果
var age;console.log(age); 只聲明不賦值 undefined(未定義)
console.log(age); 不聲明,不賦值,直接使用 報錯
age = 10;console.log(age); 不聲明,只賦值 10

變數的命名規範

  • 由字母,數字,下劃線,美元符號組成
  • 嚴格區分大小寫
  • 不能以數字開頭
  • 不能是關鍵字:var,fo,while
  • 變數名必須有意義
  • 遵循駝峰命名,首字母小寫,後面單詞的首字母大寫:myFirstName

常量

  • 概念:使用const聲明的變數為‘常量’
  • 使用場景:當一個變數永遠不會改變的時候,使用 const來聲明,而不是let.
  • 命名規範:和變數一致

註意:常量不允許重新賦值,聲明的時候必須賦值(初始化)
小技巧:不需要重新賦值的數值用const

變數聲明關鍵字總結

let - 現在實際開發的聲明方式(2022)
var - 以前的聲明變數的方式,會有很多問題(2019)
const -類似於let ,但是變數值無法被修改

數據類型

  • js的變數數據類型是只有程式在運行過程中,根據等號右邊的值來確定的。
  • js是動態語言,變數的數據類型是可以變化的。
  • typeo檢測變數的數據類型
  • 可以通過控制台輸出的字體顏色來判斷到底是哪個字元類型(藍色,數字;黑色,字元串;灰色 ,未定義)

數據類型的分類

  • 簡單數據類型(Number,String,Boolean,Underfined,Null)
  • 引用數據類型(object)

簡單數據類型

簡單數據類型 說明 預設值
Number 數字型,包含整型值和浮點型值,如:21,0.21 0
Booolean 布爾值類型,如true,false,等價於0,1 false
string 字元串類型 “”
Undefined var a;聲明瞭變數a,但沒有給值,此時a=undefined undefined
Null var a= null;聲明瞭變數a為空值 null
數字型
  • 可以是整數,小數,正數,負數。
  • isNaN():這個方法用來判斷非數字,並且返回一個值,如果是數字返回 false ,如果不是返回的是true。
特殊值
  • Infinity,無窮大
  • -Infinity, 無窮小
  • NaN,縮寫:not a number,代表一個非數值
		//1.八進位 0~7
        var num1 = 010;
        console.log(num1);
        //2.十六進位 0~9 a~f
        var num2 = 0x9;
        console.log(num2);
        //數字型最大值
        console.log(Number.MAX_VALUE);
        //無窮大
        console.log(Number.MAX_VALUE * 2); //Infinity
        //數字型的最小值
        console.log(Number.MIN_VALUE);
        //無窮小
        console.log(Number.MIN_VALUE * 2); //-Infinity
        //非數字 NaN

NaN代表一個計算錯誤。它是一個不正確的或者未定義的數學操作所到的的結果
NaN是粘性的。任何對NaN的操作都會返回NaN

未定義類型(undefined)

未定義是比較特殊的類型,只有一個值 undefined.

  • 什麼情況下出現未定義類型
    只聲明變數,不賦值的情況下,變數預設值為 undefined,一般很少【直接】為某個變數賦值為
字元串型String
  • 字元串可以是引導中的任意文本,其語法為雙引號(“ ”),和單引號(' ')或反引號包裹的數據( ``` `)
  • html使用雙引號,js推薦使用單引號
  • 字元串嵌套(外單內雙)
    | 轉義符 |解釋說明|
    |:-----
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 如今手機攝影越來越方便,隨手一拍就能記錄美好生活。但照片越多,整理越麻煩,有的時候我們想對照片進行二次加工、分享,需要不停翻找相冊。HMS Core機器學習服務(ML Kit)提供了圖片分類服務,方便用戶在多個場景下快速篩選圖片集、定義圖片題材並標註分類信息。比如,期末老師時常會要求家長和孩子一起制 ...
  • canvas 是 ArkUI 開發框架里的畫布組件,常用於自定義繪製圖形。因為其輕量、靈活、高效等優點,被廣泛應用於 UI 界面開發中。本期,我們將為大家介紹 ArkUI 開發框架中 canvas 組件的使用。 ...
  • Linux進程通訊機制 Linux 系統中有萬物皆文件的說法,虛擬文件系統(VFS)是 Linux 對外的介面,任何程式都必須通過這層介面來使用它。 為了避免系統安全問題(越權訪問),進程間記憶體無法共用,數據交互就得採用特殊的通信機制(IPC)。 進程劃分用戶空間(不可共用)跟內核空間(可共用),並 ...
  • 本文總結:條件渲染、列表渲染(v-for)、什麼時候數據才會更新,數組更新與檢測都包括哪幾種方法?,數據雙向綁定(v-model),事件處理,表單控制,v-model 之 lazy、number、trim,需要拿走~ ...
  • 1. 首先我們先準備一個盒子,讓盒子的寬高等於零,分別給定四個方向的邊框大小、實線、邊框顏色;讓邊框來充當內容。 1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset="UTF-8"> 6 <meta http-equiv=" ...
  • 才學習Vue.js,跟著b站視頻學習,視頻中用到了Vue.js的Chrome調試插件——Vue.js devtools,我下載的是官方正式版,其他版本不一定適合本教程。 首先,有關安裝Vue.js devtools不能用的問題,我在這裡簡單過一下,因為很容易百度到解決辦法。 Chrome安裝好Vue ...
  • 今天是node學習的第二天,其實越往後面學越感覺有點熟悉的味道了,光針對於node來說哈,為什麼呢,因為我之前學過一點雲計算的東西,當時感覺沒什麼用搞了下伺服器客戶端這些,沒想到這裡還能用一用,至少看到伺服器這些概念一點不陌生,看到npm一點不奇怪,我當時用的都是yum。 1. 我們今天先看到htt ...
  • 當我們給一個元素的一系列子元素設置display: inline-block; 時,會發現子元素之間存在間隙,如 <style> div { display: inline-block; width: 100px; height: 100px; background-color: yellow; } ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...