主頁 > 前端設計 > js基礎總結 (之前第一天學習js基礎的10000字+總結)

js基礎總結 (之前第一天學習js基礎的10000字+總結)

2021-12-18 08:48:06 前端設計

學習之余回頭看了下自己之前的總結,給大家分享一下,因為之前word總結的,所以代碼段是圖片,望大家見諒,

DAY1------------------------

一、如何撰寫js

editplus常用快捷鍵:

如何撰寫js:

二、js代碼運行順序

js如何運行:

三、 js的資料型別

1、原始資料型別:

2、參考型別物件:

四、js資料轉換型別

五、 js資料型別轉換

六、 JavaScript中的運算子

1. 算數運算:

模運算的2個用途:

2. 關系運算:

關系運算的比較規則:

DAY2---------------------------------------------

一、js的邏輯運算

短路邏輯(分支結構):

二、js的三目運算

使用實體

三、js分支結構

1. if結構:

2. if..else結構:

3. if..else if..[else]

四、js分支結構

switch case結構:

五、回圈結構

回圈三要素:

回圈分類:

DAY3------------------------------------------------------------------

一、for回圈

二、function定義

三、變數作用域

1. 全域作用域 - window

2. 區域作用域:

DAY4------------------------------------------------------------

一、函式的宣告提前與按值傳遞

二、陣列

如何創建陣列:

陣列分類:

undefined與null

null的用法有2種:

三、陣列遍歷

冒泡排序:

四、關聯陣列


DAY1------------------------

一、如何撰寫js

editplus常用快捷鍵:

1. ctrl+shift+n - 創建一個新的html檔案

2. ctrl+c

3. ctrl+v

4. ctrl+x

5. ctrl+s 保存當前檔案

6. ctrl+b 按照指定的瀏覽器打開該html檔案

前端:網頁開發(html+css+JavaScript),app開發,移動端開發,游戲開發,服務器開發,可視化資料開發等 python人工智能

JavaScript:實作網頁互動的腳本語言

互動:用戶輸入資料->程式接收并處理資料回傳處理結果

如何撰寫js:

  1. 通過瀏覽器視窗撰寫
  2. 通過html頁面中的script標簽內部進行JavaScript撰寫
  3. 通過通過script標簽的src屬性引入js檔案

二、js代碼運行順序

js如何運行:

瀏覽器中包含2個引擎:

1. 內容排版引擎 - 決議html和css的

2. 腳本解釋引擎 - 解釋并執行JavaScript程式腳本語言的引擎

解釋執行:默認都是自上而下逐行執行的

當頁面加載完成后,修改id為box的div的內容- XX

1. 通過Dom(檔案物件模型)的API查找到id為box的div元素物件

api: 應用程式介面

window.onload=function(){ // 當頁面加載完成后,才執行事件處理函式中的操作

var box=document.getElementById("box");

console.log(box);// null  -  空

box.innerHTML="小楊"; // 通過innerHTML屬性修改元素物件的顯示內容

三、 js的資料型別

JavaScript的資料型別:2類

1、原始資料型別:

string - 字串

number - 數字

boolean - 布爾 true false

undefined - 所有僅宣告,未賦值的變數的默認值! - 空(修飾原始資料型別的空)

null - 空 (修飾物件的空)

*symbol

2、參考型別物件

array(陣列) function(函式) Math Date

四、js資料轉換型別

資料型別轉換 - 隱式轉換:不需要程式員干預,js可以自動的完成型別轉換

僅討論算數計算時的隱式轉換

1. 算數計算中,一切資料都默認轉換為數字后,再做計算

boolean: true -> 1 false -> 0

null -> 0

undefined -> NaN -> not a number (不是一個數字)

一些資料不能轉換為數字的話,則會轉換為NaN

**NaN不等于,不大于,不小于任何值包括他自己

只要NaN參與的運算結果永遠是NaN

NaN雖然表示不是一個數字,但是他本身屬于number資料型別

  1. 在+運算中,只要碰到字串,+就不再是+法運算子號了,而變成了字串拼接符號了,導致另一個不是字串型別的資料,會變成字串型別資料

+ 做拼接作用時候 NaN也做拼接結果是拼接 不是NaN

五、 js資料型別轉換

JS強制轉換:程式員主動的呼叫專門的函式(API)執行資料轉換

何時使用:自動轉換的結果不是我們想要的結果的時候

任意-> string 2個API

x.toString() x不能是undefined或者是null

String(x) -> 相當于隱式轉換 -> 萬能轉換方式

typeof(x) -> 回傳的結果資料型別

String -》 Number:2個API

parseInt(str/num):從第一個字符開始,依次讀取每個數字,只要碰到第一個非數字字符就停止,自動跳過開頭的所有空字符(使用較多 一般數值輸入框都需要parseInt)

parseFloat(str/num):決議規則同parseInt,只不過認識第一個小數點

六、 JavaScript中的運算子

1. 算數運算:

+ - * / %(模運算) ++(遞增1) --(遞減1)

模運算 - %不取商而是取余數

比如: 3/2 = 1.5

3%2 = 1

模運算的2個用途:

1. 判斷是否能整除:比如判斷奇偶性

n%2等于0 n為偶數

不等0 n為奇數

2. 保證運算結果不能超過除數

++ 遞增1 -- 遞減1

有2種運算式:

++n

n++

這兩個運算式的共同點都是將n中的值遞增1后,再存回n中

如果上述2個運算式參與輸出了,那么是有區別的

++n 回傳運算式的新值(n遞增后的值)

n++ 回傳運算式的舊值(n遞增前的值)

2. 關系運算:

將兩個值作比較 -> true false

> < >= <= == != ===(全等比較)

關系運算的比較規則:

1. 默認將所有型別轉換為數字后,再做比較

2. 如果參與比較的兩個資料都是字串

依次取出每個字串中的字符 PK "unicode"號

3. 擴展賦值運算: += -= *= /= %=

比如:n=n+m 將n中的值遞增m后,再存回n中

n=n+m --> n+=m

n=n-m --> n-=m

注意:n=m-n 能否簡化成 n-=m? 不能!

DAY2---------------------------------------------

一、js的邏輯運算

邏輯運算:將多個關系運算綜合起來,得出一個結論(true,false)

3種: &&(且) ||(或) !(非)

&&:2個條件都必須為true,才回傳 true

||:2個條件都必須為false 才回傳 false

短路邏輯(分支結構):

&&:如果前一個條件為false,就已經得出結論->false

||: 如果前一個條件為true, 就已經得出結論->true

引申出短路邏輯:

語法:1. 條件&&(操作)

條件滿足,執行后續操作,不滿足,則不執行

2. 值1||值2

如果值1有效,就用值1,否則,就用值2

程式中的3種結構:1. 順序結構

2. 分支結構:根據不同的條件,滿足條件就執行,不滿足就不執行

3. 回圈結構

二、js的三目運算

根據不同的條件,執行不同的操作/回傳不同的值

語法:

條件1?值1或操作1: // 滿足條件1才取值1或執行操作1

條件2?值2或操作2:

默認值或默認操作 // 上述條件都不滿足則取默認值或執行默認操作

總結:多個條件,多件事,多選一執行 如果操作陳述句比較簡單,建議使用三目運算

消費大于500打八折 與判斷平年 閏年的三目運算書寫

代碼簡單便捷

使用實體

三、js分支結構

3種:

1. if結構:

一個條件一件事,滿足就做,不滿足就不做

語法:

if(條件){

滿足條件執行的操作

}

2. if..else結構:

一個條件2件事,二選一執行(類似于三目運算

語法:

if(條件){

滿足條件執行的操作

}else{

不滿足條件執行的操作

}

3. if..else if..[else]

結構:多個條件多件事,多選一執行(也有可能什么都不做)

語法:

if(條件1){

滿足條件1執行的操作

}else if(條件2){

滿足條件2執行的操作

}[else{

上述條件都不滿足執行的默認操作

四、js分支結構

switch case結構:

當條件都是*全等比較*的時候,才可以使用switch case結構

全等比較:不僅比較值,還比較資料型別

語法:

switch(運算式){

case 值1:

滿足值1才執行的代碼段

case 值2:

滿足值2才執行的代碼段

... .. :

.....................

default:

如果前面的值都不滿足,執行默認操作

}

問題:經過運行我們發現switch case結構如果沒有break關鍵詞,那么會根據條件進入到滿足的條件的case執行,并以此觸發后續的所有case操作執行(包括default),所以,如果想要獨立的執行分支,必須要在每個case之間添加break關鍵詞

break:"終止"當前結構執行,并跳出結構

何時可以省略break關鍵詞:如果上下兩個case執行相同操作時

五、回圈結構

回圈結構:讓程式*反復執行*同一段代碼

回圈三要素:

1. 回圈條件:讓回圈反復執行的條件

2. 回圈變數:回圈條件中用于比較的變數

回圈變數總是向著不滿足回圈條件的趨勢進行迭代的

3. 回圈體:回圈內反復執行的代碼段

回圈分類:

1. while回圈:先判斷回圈條件,再執行回圈體

一般情況下當回圈條件的變化沒有規律的時候優先使用while回圈

while(回圈條件){

回圈體;

迭代修改回圈變數;

}

2. do..while回圈:先執行回圈體,再判斷回圈條件

do{

回圈體;

迭代修改回圈變數;

}while(回圈條件)

注意:while回圈與do..while回圈基本等效,區別在于看第一個回圈條件是否滿足

如果滿足,則兩者等效,不滿足,while回圈一次都不執行,而do while回圈至少執行一次

DAY3------------------------------------------------------------------

一、for回圈

for回圈與while回圈等效

語法:

for(1.初始化回圈變數;2.回圈條件;3.迭代修改回圈變數){

4.回圈體;

}

1->2->4->3->2->4->3

while(回圈條件){

迭代修改回圈變數;

回圈體;

}

二、function定義

函式:程式中封裝一項專門任務的步驟清單代碼段

語法:

function 函式名([引數變數串列]){

任務步驟代碼段;

[return 回傳值;]

}

函式名(任務名):指向函式定義的一個變數,保存的是*函式物件的參考*

宣告的時候:不執行同時也不讀取內部代碼

在程式的任意位置:函式名([引數值串列]);

函式呼叫時:才開始讀取內部代碼,并執行

三、變數作用域

變數作用域:一個變數的可用范圍

2種:

1. 全域作用域 - window

全域變數 - 放在全域作用域里的變數可在程式的任意位置進行訪問并修改

2. 區域作用域:

在函式呼叫的時候才會動態創建的作用域

區域變數:2種

1. 引數變數

2. 在函式中var出來的變數

***僅在函式呼叫時,動態創建

并且使用變數的規則是:如果區域有,就不用全域的

***呼叫后,區域變數會伴隨著區域作用域一同銷毀!

DAY4------------------------------------------------------------

一、函式的宣告提前與按值傳遞

***宣告提前:正式開始執行程式之前,都會先將var宣告的變數,和function宣告的函式,提前到當前作用域的頂部,集中宣告,同時賦值留在本地

注意:函式的宣告比變數的宣告更置頂

二、陣列

陣列:一組變數的集合,連續保存多個資料的參考型別的物件

如何創建陣列:

**1. 創建空陣列 var 陣列名=[];

暫時不知道陣列內容的時候,先創建再追加

**2. 創建陣列的同時直接初始化內容

var 陣列名=[值1,值2,...];

3. 創建指定個數的陣列

var 陣列名=new Array(n);

創建一個陣列物件,同時初始化n個空元素

4. 創建同時直接初始化

var 陣列名=new Array(值1,值2,...);

注意:3,4創建陣列方式不常用,因為有分歧

var arr=new Array(7);

可以解釋為初始化了7個空元素 也可以解釋為初始化了一個陣列只放了一個元素值為7

陣列分類:

1. 索引陣列

下標從0開始每次遞增1

length - 元素個數

索引陣列的下標從0開始,每次遞增1的特性

這個下標天生就是一個回圈變數

下標遞增到<length結束 - 回圈條件

2. 關聯陣列(哈希陣列)

下標可以自定義,而且下標不可重復

length - 失效

3. 二維陣列 - 元素又指向另一個子陣列物件

下標分為行下標和列下標,都是從0開始,每次遞增1

行 - length獲得陣列中有多少個子陣列物件

列 - length獲得子陣列中的元素個數

所有的陣列都有下標!只不過每種陣列下標特點不同

都有length屬性,length屬性表示陣列的長度 - 保存了多少個元素

如何獲得某個元素值: var 變數=arr[下標]

如何獲得陣列長度: arr.length

如何獲得最后一個元素值:arr[arr.length-1]

undefined與null

1. 所有僅宣告未賦值的變數的默認值 - undefined undefined為空 - 修飾原始資料型別

2. null - 修飾物件的空

null專門表示一個變數不再指向任何物件的地址了!

null的用法有2種:

1. var 變數 = null; - 打標記

表示將來該變數即將指向一個物件,只是此時什么都沒有指向

2. var obj = 物件;

把該物件使用完畢后,就把obj主動賦值null - 》 obj=null

將來一個變數不再指向物件了,那么可以主動賦值為null

這么做得話,就表示主動的釋放記憶體,節省記憶體空間從而提高瀏覽器性能 記憶體中有個垃圾回收器,如果一個物件沒有變數指向(參考),那么就會被垃圾回收器回收,從而釋放記憶體

js中的物件:記憶體中保存一組相關資料和功能的整體 物件都是new運算子創建的

new專門在記憶體中開辟一個空間,保存資料和功能,回傳*存盤地址*

三、陣列遍歷

冒泡排序:

將陣列中的元素按照從大到小(從小到大)的順序進行排列

四、關聯陣列

關聯陣列(hash哈希陣列)- 可以自定義下標的陣列

關聯陣列的key(下標)不可重復,length屬性失效

如何遍歷hash陣列:

for(var key in obj){

console.log(obj[key])

}

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/384300.html

標籤:其他

上一篇:Vue 電商管理系統

下一篇:如何在@OneToMany關系映射的列上使用JPAfindBy查詢?

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • vue移動端上拉加載

    可能做得過于簡單或者比較low,請各位大佬留情,一起探討技術 ......

    uj5u.com 2020-09-10 04:38:07 more
  • 優美網站首頁,頂部多層導航

    一個個人用的瀏覽器首頁,可以把一下常用的網站放在這里,平常打開會比較方便。 第一步,HTML代碼 <script src=https://www.cnblogs.com/szharf/p/"js/jquery-3.4.1.min.js"></script> <div id="navigate"> <ul> <li class="labels labels_1"> ......

    uj5u.com 2020-09-10 04:38:47 more
  • 頁面為要加<!DOCTYPE html>

    最近因為寫一個js函式,需要用到$(window).height(); 由于手寫demo的時候,過于自信,其實對前端方面的認識也不夠體系,用文本檔案直接敲出來的html代碼,第一行沒有加上<!DOCTYPE html> 導致了$(window).height();的結果直接是整個document的高 ......

    uj5u.com 2020-09-10 04:38:52 more
  • WordPress網站程式手動升級要做好資料備份

    WordPress博客網站程式在進行升級前,必須要做好網站資料的備份,這個問題良家佐言是遇見過的;在剛開始接觸WordPress博客程式的時候,因為升級問題和博客網站的修改的一些嘗試,良家佐言是吃盡了苦頭。因為購買的是西部數碼的空間和域名,每當佐言把自己的WordPress博客網站搞到一塌糊涂的時候 ......

    uj5u.com 2020-09-10 04:39:30 more
  • WordPress程式不能升級為5.4.2版本的原因

    WordPress是一款個人博客系統,受到英文博客愛好者和中文博客愛好者的追捧,并逐步演化成一款內容管理系統軟體;它是使用PHP語言和MySQL資料庫開發的,用戶可以在支持PHP和MySQL資料庫的服務器上使用自己的博客。每一次WordPress程式的更新,就會牽動無數WordPress愛好者的心, ......

    uj5u.com 2020-09-10 04:39:49 more
  • 使用CSS3的偽元素進行首字母下沉和首行改變樣式

    網頁中常見的一種效果,首字改變樣式或者首行改變樣式,效果如下圖。 代碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ......

    uj5u.com 2020-09-10 04:40:09 more
  • 關于a標簽的講解

    什么是a標簽? <a> 標簽定義超鏈接,用于從一個頁面鏈接到另一個頁面。 <a> 元素最重要的屬性是 href 屬性,它指定鏈接的目標。 a標簽的語法格式:<a href=https://www.cnblogs.com/summerxbc/p/"指定要跳轉的目標界面的鏈接">需要展示給用戶看見的內容</a> a標簽 在所有瀏覽器中,鏈接的默認外觀如下: 未被訪問的鏈接帶 ......

    uj5u.com 2020-09-10 04:40:11 more
  • 前端輪播圖

    在需要輪播的頁面是引入swiper.min.js和swiper.min.css swiper.min.js地址: 鏈接:https://pan.baidu.com/s/15Uh516YHa4CV3X-RyjEIWw 提取碼:4aks swiper.min.css地址 鏈接:https://pan.b ......

    uj5u.com 2020-09-10 04:40:13 more
  • 如何設定html中的背景圖片(全屏顯示,且不拉伸)

    1 <style>2 body{background-image:url(https://uploadbeta.com/api/pictures/random/?key=BingEverydayWallpaperPicture); 3 background-size:cover;background ......

    uj5u.com 2020-09-10 04:40:16 more
  • Java學習——HTML詳解(上)

    HTML詳解 初識HTML Hyper Text Markup Language(超文本標記語言) 1 <!--DOCTYPE:告訴瀏覽器我們要使用什么規范--> 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <!--meta 描述性的標簽,描述一些 ......

    uj5u.com 2020-09-10 04:40:33 more
最新发布
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 07:59:23 more
  • 生產事故-走近科學之消失的JWT

    入職多年,面對生產環境,盡管都是小心翼翼,慎之又慎,還是難免捅出簍子。輕則滿頭大汗,面紅耳赤。重則系統停擺,損失資金。每一個生產事故的背后,都是寶貴的經驗和教訓,都是專案成員的血淚史。為了更好地防范和遏制今后的各類事故,特開此專題,長期更新和記錄大大小小的各類事故。有些是親身經歷,有些是經人耳傳口授 ......

    uj5u.com 2023-04-18 07:55:04 more
  • 記錄--Canvas實作打飛字游戲

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 打開游戲界面,看到一個畫面簡潔、卻又富有挑戰性的游戲。螢屏上,有一個白色的矩形框,里面不斷下落著各種單詞,而我需要迅速地輸入這些單詞。如果我輸入的單詞與螢屏上的單詞匹配,那么我就可以獲得得分;如果我輸入的單詞錯誤或者時間過長,那么我就會輸 ......

    uj5u.com 2023-04-04 08:35:30 more
  • 了解 HTTP 看這一篇就夠

    在學習網路之前,了解它的歷史能夠幫助我們明白為何它會發展為如今這個樣子,引發探究網路的興趣。下面的這張圖片就展示了“互聯網”誕生至今的發展歷程。 ......

    uj5u.com 2023-03-16 11:00:15 more
  • 藍牙-低功耗中心設備

    //11.開啟藍牙配接器 openBluetoothAdapter //21.開始搜索藍牙設備 startBluetoothDevicesDiscovery //31.開啟監聽搜索藍牙設備 onBluetoothDeviceFound //30.停止監聽搜索藍牙設備 offBluetoothDevi ......

    uj5u.com 2023-03-15 09:06:45 more
  • canvas畫板(滑鼠和觸摸)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>canves</title> <style> #canvas { cursor:url(../images/pen.png),crosshair; } #canvasdiv{ bo ......

    uj5u.com 2023-02-15 08:56:31 more
  • 手機端H5 實作自定義拍照界面

    手機端 H5 實作自定義拍照界面也可以使用 MediaDevices API 和 <video> 標簽來實作,和在桌面端做法基本一致。 首先,使用 MediaDevices.getUserMedia() 方法獲取攝像頭媒體流,并將其傳遞給 <video> 標簽進行渲染。 接著,使用 HTML 的 < ......

    uj5u.com 2023-01-12 07:58:22 more
  • 記錄--短視頻滑動播放在 H5 下的實作

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 短視頻已經無數不在了,但是主體還是使用 app 來承載的。本文講述 H5 如何實作 app 的視頻滑動體驗。 無聲勝有聲,一圖頂百辯,且看下圖: 網址鏈接(需在微信或者手Q中瀏覽) 從上圖可以看到,我們主要實作的功能也是本文要講解的有: ......

    uj5u.com 2023-01-04 07:29:05 more
  • 一文讀懂 HTTP/1 HTTP/2 HTTP/3

    從 1989 年萬維網(www)誕生,HTTP(HyperText Transfer Protocol)經歷了眾多版本迭代,WebSocket 也在期間萌芽。1991 年 HTTP0.9 被發明。1996 年出現了 HTTP1.0。2015 年 HTTP2 正式發布。2020 年 HTTP3 或能正... ......

    uj5u.com 2022-12-24 06:56:02 more
  • 【HTML基礎篇002】HTML之form表單超詳解

    ??一、form表單是什么

    ??二、form表單的屬性

    ??三、input中的各種Type屬性值

    ??四、標簽 ......

    uj5u.com 2022-12-18 07:17:06 more