主頁 > 前端設計 > js基礎篇

js基礎篇

2021-08-07 08:24:35 前端設計

JavaScript語法

字面量 也叫直接量,就是程式中直接使用的,是變數后面的值
變數就是宣告一個未知可變的量 變數宣告符合unicode編碼所有變數符合utf-8的編碼都可以

識別符號命名標準:

1.必須是字母,數字,_,¥開頭
2.以駝峰命名規則
3. 首單詞小寫 后面的單詞首字母大寫 -*/

變數的作用域

在函式之外宣告的變數,叫做全域變數,因為它可被當前檔案中的任何其他代碼所訪問,
在函式內部宣告的變數,叫做區域變數,因為它只能在當前函式的內部訪問,

變數提升

JavaScript 變數的另一個不同尋常的地方是,你可以先使用變數稍后再宣告變數而不會引發例外,這一概念稱為變數提升;JavaScript
變數感覺上是被“提升”或移到了函式或陳述句的最前面,但是,提升后的變數將回傳 undefined
值,因此在使用或參考某個變數之后進行宣告和初始化操作,這個被提升的變數仍將回傳 undefined 值,

  例子1
 
console.log(x === undefined); // true
var x = 3;


 例子2

//will return a value of undefined
var myvar = "my value";

(function() {
  console.log(myvar); // undefined
  var myvar = "local value";
})();
上面的例子,也可寫作:

 例子1

var x;
console.log(x === undefined); // true
x = 3;
 
例子2

var myvar = "my value";
 
(function() {
  var myvar;
  console.log(myvar); // undefined
  myvar = "local value";
})();

由于存在變數提升,一個函式中所有的var陳述句應盡可能地放在接近函式頂部的地方,這個習慣將大大提升代碼的清晰度,

常量(Constants)

你可以用關鍵字 const
創建一個只讀的常量,常量識別符號的命名規則和變數相同:必須以字母、下劃線(_)或美元符號($)開頭并可以包含有字母、數字或下劃線,

const PI = 3.14;

常量不可以通過重新賦值改變其值,也不可以在代碼運行時重新宣告,它必須被初始化為某個值, 常量的作用域規則與 let
塊級作用域變數相同,若省略const關鍵字,則該識別符號將被視為變數, 在同一作用域中,不能使用與變數名或函式名相同的名字來命名常量,

例如:
// 這會造成錯誤
function f() {};
const f = 5;

// 這也會造成錯誤
function f() {
  const g = 5;
  var g;

  //陳述句
}

然而,物件屬性被賦值為常量是不受保護的,所以下面的陳述句執行時不會產生錯誤,

const MY_OBJECT = {"key": "value"};
MY_OBJECT.key = "otherValue";

同樣的,陣列的被定義為常量也是不受保護的,所以下面的陳述句執行時也不會產生錯誤,

const MY_ARRAY = ['HTML','CSS'];
MY_ARRAY.push('JAVASCRIPT');
console.log(MY_ARRAY); //logs ['HTML','CSS','JAVASCRIPT'];

資料型別

最新的 ECMAScript 標準定義了8種資料型別:

5種基本資料型別:

1 布林值(Boolean),有2個值分別是:true 和 false.
2 null , 一個表明 null 值的特殊關鍵字,JavaScript 是大小寫敏感的,故 null 與 Null、NUL完全不同,
3 undefined ,和 null 一樣是一個特殊的關鍵字,undefined 表示變數未定義時的屬性,
4 數字(Number),整數或浮點數,例如: 42 或者3.14159,
5 字串(String),字串是一串表示文本值的字符序列,例如:“Howdy” ,

3種參考資料型別:

1 以及物件(Object),
2 function 函式
3 array 陣列

雖然這些資料型別相對來說比較少,但是通過他們你可以在程式中開發有用的功能,物件(Objects)
和函式(functions)是這門語言的另外兩個基本元素,你可以把物件當作存放值的一個命名容器,然后將函式當作你的程式能夠執行的步驟,

字面量 (Literals)

布爾字面量 (Boolean literals)
不要混淆作為布爾物件的真和假與布爾型別的原始值true和false,布爾物件是原始布爾資料型別的一個包裝器,參見 布爾物件,

整數 (Integers)

整數可以用十進制(基數為10)、十六進制(基數為16)、八進制(基數為8)以及二進制(基數為2)表示,
十進制整數字面量由一串數字序列組成,且沒有前綴0, 八進制的整數以 0(或0O、0o)開頭,只能包括數字0-7,
十六進制整數以0x(或0X)開頭,可以包含數字(0-9)和字母 a~f 或 A~F, 二進制整數以0b(或0B)開頭,只能包含數字0和1,
嚴格模式下,八進制整數字面量必須以0o或0O開頭,而不能以0開頭,

整數字面量舉例:

0, 117 and -345 (十進制, 基數為10)
015, 0001 and -0o77 (八進制, 基數為8) 0x1123,
0x00111 and -0xF1A7 (十六進制, 基數為16或"hex")
0b11, 0b0011 and -0b11 (二進制,基數為2)

浮點數字面量 (Floating-point literals)

浮點數字面值可以有以下的組成部分:

一個十進制整數,可以帶正負號(即前綴“+”或“ - ”), 小數點(“.”),
小數部分(由一串十進制數表示),
指數部分 -指數部分以“e”或“E”開頭,后面跟著一個整數,可以有正負號(即前綴“+”或“-”),
浮點數字面量至少有一位數字,而且必須帶小數點或者“e”(大寫“E”也可),

簡言之,其語法是:
[(+|-)][digits][.digits][(E|e)[(+|-)]digits]
例如:
3.14      
-.2345789 // -0.23456789
-3.12e+12  // -3.12*1012
.1e-23    // 0.1*10-23=10-24=1e-24

物件字面量 (Object literals)

物件字面值是封閉在花括號對({})中的一個物件的零個或多個"屬性名-值"對的(元素)串列,你不能在一條陳述句的開頭就使用物件字面值,這將導致錯誤或產生超出預料的行為,
因為此時左花括號({)會被認為是一個陳述句塊的起始符號,(譯者:這 里需要對陳述句statement、塊block等基本名詞的解釋)
以下是一個物件字面值的例子,物件car的第一個元素(譯注:即一個屬性/值對)定義了屬性myCar;第二個元素,屬性getCar,參考了一個函式(即CarTypes(“Honda”));第三個元素,屬性special,使用了一個已有的變數(即Sales),

var Sales = "Toyota";

function CarTypes(name) {
  return (name === "Honda") ?
    name :
    "Sorry, we don't sell " + name + "." ;
}

var car = { myCar: "Saturn", getCar: CarTypes("Honda"), special: Sales };

console.log(car.myCar);   // Saturn
console.log(car.getCar);  // Honda
console.log(car.special); // Toyota

更進一步的,你可以使用數字或字串字面值作為屬性的名字,或者在另一個字面值內嵌套上一個字面值,如下的示例中使用了這些可選項,

var car = { manyCars: {a: "Saab", "b": "Jeep"}, 7: "Mazda" };

console.log(car.manyCars.b); // Jeep
console.log(car[7]); // Mazda

物件屬性名字可以是任意字串,包括空串,如果物件屬性名字不是合法的javascript識別符號,它必須用"“包裹,屬性的名字不合法,那么便不能用.訪問屬性值,而是通過類陣列標記(”[]")訪問和賦值,

var unusualPropertyNames = {
  "": "An empty string",
  "!": "Bang!"
}
console.log(unusualPropertyNames."");   // 語法錯誤: Unexpected string
console.log(unusualPropertyNames[""]);  // An empty string
console.log(unusualPropertyNames.!);    // 語法錯誤: Unexpected token !
console.log(unusualPropertyNames["!"]); // Bang!

字串字面量 (String literals)

字串字面量是由雙引號(")對或單引號(’)括起來的零個或多個字符,字串被限定在同種引號之間;也即,必須是成對單引號或成對雙引號,下面的例子都是字串字面值:

"foo"
'bar'
"1234"
"one line \n another line"
"John's cat"

運算子

運算子就是將一個數或多個數進行運算,并將結果回傳 運算子分為:算術運算子 邏輯運算子 一元運算子 比較運算子 算術運算子:+ - * / % ++ –

邏輯及運算子:與&& 或|| 非!

&&必須倆個條件都滿足才能成立
||滿足其中一條條件即可
!直接否定

一元運算子:a++ ++a

比較運算子:> 大于運算子 < 小于運算子 <= 小于或等于運算子 >= 大于或等于運算子 ==相等運算子 === 嚴格相等運算子 ! != 不相等運算子

一個等于號是賦值 倆個等于號是判斷值是否相等 三個等于號是判斷值跟資料型別是否相等、 加號左右倆測如果有字串就會進行拼串,若無字串則轉為number計算 加減乘除取模都轉為number計算
條件運算子也叫三元運算子

賦值運算子

*= += -= = /= %=

if陳述句

if(條件){執行代碼}
else{執行代碼1}

if執行流程

只要滿足第一個判斷條件就執行對應的陳述句,下面無論是否滿足都不執行
不滿足第一個條件,接著判斷下一個條件,如果下一個條件滿足就停止判斷,輸出對應陳述句,如果下一個陳述句還不滿足,就繼續往下判斷
所以如果要寫判斷條件把最大范圍寫在上面,小范圍寫在后面,或者分段寫判斷條件

回圈陳述句

for回圈
for回圈的關鍵字	()里面是條件		var i=0;初始值		i<=10;回圈條件		i++;自增
for回圈句式/語法
for(1初始值;回圈條件;回圈方式){
執行陳述句
}

1 初始化變數可以放到小括號里面也可以放到回圈外面
2 判斷是否符合回圈條件,如果是true那就繼續往下執行 如果是false,直接不執行
3 執行回圈體中的陳述句 4 執行回圈方式(++/–等
5 判斷是否符合回圈條件,如果是true那就繼續往下執行 如果是false,直接不執行 初始值只能執行一次

while回圈

1 初始化變數:是在回圈外面初始化
2 判斷是否符合回圈條件 如果回傳值是true滿足條件則執行代碼
如果回傳值是false不滿足條件則跳出回圈
3 執行的代碼塊
4 回圈方式,如果放在回圈之前,會先按斬訓圈方式增加或減少,然后再輸出,如果放到輸出后會執行輸出,進行下一個回圈之前,按斬訓圈方式增加或減少

while(true){}

當while后面的條件一直是true的時候就是一個死回圈,為了避免問題,有需要情況下可以在回圈體內進行判斷,達到某個條件然后break(跳出回圈),
break跟continue可以處理死回圈中執行停止或跳過

		do..while回圈
     		 var  a=0;//宣告變數
			do{//執行塊
				alert(a);//輸出
				a++;//回圈方式
			}
			while(a<0)//回圈條件                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            

for,while和do while的區別

For的初始值,條件,回圈方式可以寫到小括號里面,其他不可以使用初始值變數

while和do while初始值都是寫在外面的 條件寫在小括號內,回圈方式卸載回圈體內, do
while是先執行后判斷,無論條件是否為true他都會執行一遍
for和while是先判斷后執行,當條件為true時才會執行回圈體中的代碼,條件是false則不執行

switch條件分支陳述句

parseInt取整,將字串轉換成整型,回傳由字串轉換得到的整數, parseInt()取整是JavaScript當中的內置方法
相同點:倆者取整后都是number型別 不同點:輸入數字字串取整后得數字型別的值 輸入得漢字型別的字串取整后得NaN

parseFloat()去浮點 parseFloat()把小數點后面的0去掉

case是switch中匹配的每個案例,必須用break中斷每一個陳述句(除了最后一個),如果不寫break只要符合條件包括后面的全部顯示,寫break只輸出符合條件的匹配項
default默認 在switch中放到最后一項,作為最后默認的選項

switch陳述句和if陳述句的區別

if陳述句可以對一些一切未知的條件進行判斷 switch陳述句只可以對有一些已知條件的事情進行判斷

強制型別轉換

String()將非字串型別轉換為字串
Number()將非數字型別的轉換為數字型別
Boolean()將非布爾型別的轉換為布爾型別

隱式型別轉換

+-*/%
parseInt()將字串型別的轉換為整數數字

跳轉陳述句

break是跳出回圈 break默認終止的是離他最近的回圈 如果倆個回圈嵌套,想終止外側回圈給外側回圈起名字,在外側回圈上直接寫名字
名字:for(){} 然后break 名字; 實作內外回圈同時終止

基本資料型別都是一個具體的值 值與值之間沒有任何聯系
物件則不同,除了基本型別都是物件

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

標籤:其他

上一篇:JavaScript入門第十二章(陣列回圈嵌套)

下一篇:SSM+Nginx+Redis+MySQL+Quarz+Vue實作校園商鋪平臺

標籤雲
其他(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