javascript筆記--基礎(chǔ)&函數(shù)

概念

網(wǎng)頁:?jiǎn)为?dú)的html
網(wǎng)站:多個(gè)html和后端文件
應(yīng)用程序:可以和用戶交互缴啡,并實(shí)現(xiàn)某種功能

javascript的應(yīng)用場(chǎng)景

名稱 定義
html 結(jié)構(gòu)層 從語義角度描述頁面結(jié)構(gòu)
css 樣式層 從美觀角度描述頁面展示(展示)
javascript 行為層 從交互角度描述頁面行為

應(yīng)用場(chǎng)景

  • 網(wǎng)頁特效
  • 服務(wù)端開發(fā) node.js
  • 命令行工具 node.js
  • 桌面程序 Electron
  • app Cordova
  • 控制硬件-物聯(lián)網(wǎng) ruff
  • 游戲開發(fā) coco2d-js等等
    瀏覽器就是js的運(yùn)行客戶端疆偿,js引擎是瀏覽器的一部分

js的組成

ECMAscript含衔、DOM掩完、BOM

dom文檔對(duì)象模型
bom瀏覽器對(duì)象模型 對(duì)瀏覽器進(jìn)行操作的api

JS的書寫位置

行內(nèi)
script標(biāo)簽
script標(biāo)簽引入: <script src=""></script>

js的內(nèi)部函數(shù)

alert():在瀏覽器中彈出警示框
prompt(設(shè)置的提示內(nèi)容召廷,默認(rèn)輸入的信息)

控制臺(tái)作用說明

image-20220113200909850.png
image-20220113201103901.png
image-20220113201222739.png

數(shù)據(jù)類型

字面量表示固定值得常量弹惦,對(duì)變量是反義詞就對(duì)了霎挟,比如:數(shù)字柬焕、字符串审残、undefined、布爾類型的字面值

數(shù)字字面量:

整數(shù)字面量斑举、浮點(diǎn)數(shù)字面量搅轿、特殊值(infinity)

整數(shù)進(jìn)制說明:

  • 十進(jìn)制是最基本的數(shù)字字面量格式,直接輸入數(shù)字即可
  • 八進(jìn)制字面量需要在前邊加上0富玷、0O璧坟、0o;八進(jìn)制整數(shù)只有0-7
  • 十六進(jìn)制前綴0x赎懦、0X雀鹃,包含數(shù)字0-9和a-f/A-F
    進(jìn)行算數(shù)計(jì)算式,統(tǒng)一以十進(jìn)制計(jì)算

浮點(diǎn)數(shù)字面量:

  • 大于0小于1的小數(shù)可以不寫0励两,例如:“.1
  • 公式栗子:console.log(1.2e4) == 1.2 *10四次方
  • 浮點(diǎn)數(shù)精度問題:
    • 浮點(diǎn)數(shù)最高精度是17位黎茎,例如:
      0.1+0.2 = 0.30000000000000004
    • 無窮 infinity表示一個(gè)數(shù)字高于能計(jì)算的最大值
      • 最小值,Number.MIN_VALUE当悔,表示5e-324傅瞻,表示
      • 最大值,Number.MAX_VALUE盲憎,表示1.7976931348623157e+308
      • infinity 無窮大
      • -infinity 無窮小
    • NaN 表示是一個(gè)不正常的嗅骄,但是屬于number類型不等于任何數(shù),包括打本身
字符串字面量

''焙畔,""要交叉使用不能使用相同引號(hào)嵌套掸读,例如單引號(hào)中嵌套單引號(hào)

  • 轉(zhuǎn)義符號(hào) \
    • \n 換行
    • \t 制表符
    • ' 輸出一個(gè)單引號(hào)
    • \ 輸出一個(gè)斜杠

變量

使用關(guān)鍵字var聲名變量
若直接a =1 ,表示聲名了一個(gè)全局變量a
規(guī)則:

  • 由數(shù)字、字母儿惫、下劃線澡罚、特殊符號(hào)組成,不能數(shù)字開頭
  • 字母區(qū)分大小寫
  • 不能使用保留字和關(guān)鍵字

一次聲名多個(gè)變量的方法

var a = 1,b =2 ,c =3

簡(jiǎn)單數(shù)據(jù)類型

number 數(shù)字類型 int float
string 字符串
undefined undefined類型肾请,未定義
boolean 布爾類型
null null類型:表示空值留搔,可以后期賦值

另外還要復(fù)雜類型:object 對(duì)象類型

檢測(cè)數(shù)據(jù)類型的函數(shù):typeof()

轉(zhuǎn)換成字符串類型的方法
  • a.tostring
  • String(a),無法使用toString方法的可以使用,例如null和undefined
  • 使用“+”拼接
轉(zhuǎn)換成數(shù)值類型
  • Number()
    空白和空字符串轉(zhuǎn)換成0铛铁,有內(nèi)容的字符串轉(zhuǎn)換成NaN
    true轉(zhuǎn)換成1隔显,false轉(zhuǎn)換成0
    undefined轉(zhuǎn)換成 NaN
    null轉(zhuǎn)換成0

  • 字符串轉(zhuǎn)換數(shù)值的默認(rèn)函數(shù)

  • parseInt():轉(zhuǎn)換成整數(shù)
    作用:對(duì)浮點(diǎn)數(shù)取證,第二字符串轉(zhuǎn)換成整數(shù)數(shù)字

    • 直接舍棄小數(shù)部分
  • parseFloat():轉(zhuǎn)換成浮點(diǎn)數(shù)

轉(zhuǎn)換成布爾類型
  • Boolean():
    轉(zhuǎn)換成false:NaN饵逐、0括眠、""、空字符串倍权、null掷豺、undefined
    轉(zhuǎn)換成true:非空、非NaN數(shù)字薄声、非空字符串
空字符串 var a = ""
空白字符串 var A = "      "

操作符

算符運(yùn)算符

  • + 当船、—、*默辨、/德频、%、()
  • % a/b = c 余 d,a % b = d
  • ()數(shù)學(xué)方法缩幸,先算小括號(hào)

異常情況:
NaN參與的運(yùn)算結(jié)構(gòu)都為NaN
Infinity看情況
隱式轉(zhuǎn)換:計(jì)算機(jī)會(huì)將其他數(shù)據(jù)類型轉(zhuǎn)換成數(shù)字類型進(jìn)行計(jì)算
字符串類型除了加法之外都會(huì)進(jìn)行隱式轉(zhuǎn)換壹置,加法是連字符,其他類型規(guī)則如上

栗子:"1234" 轉(zhuǎn)換成整數(shù)1234進(jìn)行計(jì)算
轉(zhuǎn)換0:null桌粉、空蒸绩、空白字符串、false
轉(zhuǎn)換成NaN铃肯、undefined、非空传蹈、非純數(shù)字字符串("we1212")

比較運(yùn)算符
>押逼、<、>=惦界、 <=挑格、 == 、!=沾歪、 ===漂彤、 !==NaN參與的只有不等于和不全等于為true,其余為false
Infinity看情況
也會(huì)進(jìn)行隱式轉(zhuǎn)換類似運(yùn)算符
null與0判斷,等于為false挫望,<= 立润、 >=為true
null == undefined
eg:
nan做運(yùn)算只有不等于或不全等于為true、
infinity做運(yùn)算包含等好的媳板,大于等于桑腮,小于等于,等于蛉幸,全等為true其余flase

字符轉(zhuǎn)之間不會(huì)進(jìn)行隱式轉(zhuǎn)換而是比較字符編碼順序0-9破讨、A-Z、a-z奕纫,前面小于后面

邏輯運(yùn)算符
&&且提陶、||或、匹层!非

也會(huì)進(jìn)行隱式轉(zhuǎn)換
image-20220126210945862.png

邏輯運(yùn)算順序:非搁骑、與、或

賦值運(yùn)算符
=又固、+=仲器、-=、*=仰冠、/=乏冀、%=、++洋只、--
一元運(yùn)算符
++辆沦、--
a++,a++的值等于a识虚,但是再次調(diào)用a的時(shí)候才會(huì)+1
++a = 變量+1
運(yùn)算優(yōu)先級(jí):
()肢扯、一元運(yùn)算符、算數(shù)運(yùn)算符担锤、比較運(yùn)算符蔚晨、相等運(yùn)算符(==,===肛循,!=铭腕,!==)、邏輯運(yùn)算符多糠、賦值

表達(dá)式

一個(gè)表達(dá)式可以產(chǎn)生一個(gè)值累舷,可能是運(yùn)算、函數(shù)調(diào)用夹孔、字面量被盈∥瞿酰可以放在任何需要值得地方

if語句

if(判斷條件){
  代碼塊:if(判斷條件){
              代碼塊
      }else{
              代碼塊
        }
}else if(判斷條件){
代碼塊
}else{
代碼塊
}

多分子if語句的跳樓現(xiàn)象:
滿足某個(gè)分支的條件后,不會(huì)再執(zhí)行下面的語句只怎,直接完成if語句袜瞬。

三元表達(dá)式

也叫三元運(yùn)算符,必須有三個(gè)操作數(shù)參與運(yùn)算
操作符號(hào):尝盼?:
判斷條件吞滞?為真時(shí)的結(jié)果:為假是的結(jié)果


image-20220203205520167.png

Switch語句

image-20220205153023105.png

default相當(dāng)于if語句的else
break是為了模擬跳樓現(xiàn)象,不顯匹配后還是會(huì)執(zhí)行下面的代碼

for循環(huán)語句

for(定義循環(huán)變量盾沫;循環(huán)最大值或最小值裁赠;步長(zhǎng)){
代碼塊
}
執(zhí)行過程:


image-20220205162622538.png

注意事項(xiàng):
for循環(huán)小括號(hào)必須有兩個(gè)分號(hào)
{}后邊不用加分號(hào)
不設(shè)置最大最小值會(huì)形成死循環(huán)
栗子:

var i =1;
for (console.log("hahh") ; i<10;){
console.log(i);
i++;
}
image-20220205170719698.png

do while循環(huán)

do{
代碼塊
}while{
條件表達(dá)式
}
先執(zhí)行代碼塊,等條件表達(dá)式為真時(shí)可以繼續(xù)執(zhí)行
注意事項(xiàng):

  • 變量參與循環(huán)時(shí)赴精,要將變量寫在循環(huán)外面佩捞,否則會(huì)被重置
  • do while語句第一次運(yùn)行就為false時(shí),也會(huì)執(zhí)行一次結(jié)構(gòu)體蕾哟。


    image-20220205172727554.png

while循環(huán)

是一種前測(cè)試循環(huán)語句一忱,開始循環(huán)前驗(yàn)證條件,為真執(zhí)行谭确,為假跳出
語法:
while(){
代碼塊
}
總結(jié):必須執(zhí)行一次循環(huán)體的語句用do while
先驗(yàn)證條件的用while

break語句

跳出循環(huán)帘营,若嵌套循環(huán)的話,break語句只終止自己所在的那個(gè)循環(huán)逐哈,不影響外部循環(huán)
例如:

for (var i =1 ; i < 100;i++){
  for (var j =1 ; i < i; j++){
      if(j > 80){
              break
      }    
  }
}

//若想break外部循環(huán)可以使用label標(biāo)簽方法:
out:for (var i =1 ; i < 100;i++){
  for (var j =1 ; i < i; j++){
      if(j > 80){
              break out;
      }    
  }
}

continue語句

作用:跳過這次循環(huán)
與break使用方法一致芬迄。


image-20220206193458235.png
var i =1

var a =6

for (;i <= 300; i++){

  zhu: if (100 % i == 0){

    if (i > 6){

      break zhu;

    }

    console.log(`${i}是6的約數(shù)`)

  }

}

數(shù)組

可以理解為時(shí)js中的list類型

var a =[]
獲取數(shù)組元素
var a =[4,3,45,6,76,78];
console.log(a.length);
for(var i = 0; i < a.length; i++){
  console.log(a[i]);
}
//數(shù)組程度從1開始算,數(shù)組下邊從0開始

函數(shù)

使用function關(guān)鍵字聲明函數(shù)
函數(shù)的數(shù)據(jù)類型時(shí)function昂秃,可以作為參數(shù)傳給其他函數(shù)

function 函數(shù)名(參數(shù)){
代碼塊
}
//調(diào)用函數(shù)
函數(shù)名()

//添加函數(shù)參數(shù)
//定義在函數(shù)內(nèi)容的參數(shù)a禀梳,b叫形參,本質(zhì)時(shí)變量
function sum(a,b){
console.log(a+b)
}
//調(diào)用函數(shù)
sum(2,3)//傳入函數(shù)的參數(shù)2肠骆,3叫實(shí)參
var a = parseFloat(prompt('輸入a'))
var b = parseFloat(prompt('輸入b'))
sum(a,b)

//匿名函數(shù)
var foo = function(){
代碼塊
}
//調(diào)用
foo()
//或者直接將函數(shù)矮化成表達(dá)式
var foo1 = function fun(){
代碼塊
}
//調(diào)用
foo1()
//使用fun()調(diào)用會(huì)報(bào)錯(cuò)

函數(shù)命名規(guī)則:

  • 不能數(shù)字開頭
  • 區(qū)分大小寫算途、不能使用關(guān)鍵字和保留字
    arguments對(duì)象
    函數(shù)中內(nèi)置的存儲(chǔ)實(shí)參的偽數(shù)組,可以遍歷
funciton foo(){
//打印全部實(shí)參控制臺(tái)會(huì)顯示一個(gè)list
console.log(arguments)
console.log(arguments.length)
}
2022-02-15-20-59-25-image.png

throw:拋出
new:新的
error()錯(cuò)誤

函數(shù)的返回值

使用return關(guān)鍵字蚀腿,可以執(zhí)行反函數(shù)后返回一個(gè)值

  • 執(zhí)行到return后不會(huì)在執(zhí)行后面的代碼
  • 可以return 字面量/表達(dá)式
函數(shù)的遞歸

在函數(shù)內(nèi)部調(diào)用他自己即為遞歸嘴瓤,大多用來解決數(shù)學(xué)問題,例如斐波那契數(shù)列

function fun(a){ 
  if (a == 1 || a == 2){
      return 1;
    }else{
      return fun(a-1) + fun(a-2);
  }
}
console.log(fun(1))
console.log(fun(8))
函數(shù)的作用域

es6之前的定義
函數(shù)作用域內(nèi)容變量只在函數(shù)內(nèi)部生效
全局變量可以在函數(shù)內(nèi)部使用
es6新增:
每個(gè){}中的結(jié)果體屬于一個(gè)塊唯咬,在{}中定義的變量外部不能使用
變量退出作用域之后會(huì)銷毀纱注,全局變量關(guān)閉網(wǎng)頁才會(huì)銷毀。

函數(shù)的作用域鏈
2022-02-15-21-47-30-image.png

遮蔽效應(yīng)
多層函數(shù)作用域的機(jī)構(gòu)胆胰,查找變量會(huì)從里到外開始找,使用找到的第一定義的變量刻获,會(huì)發(fā)生內(nèi)層變量遮蔽外層的效果蜀涨。

預(yù)解析

js代碼由瀏覽器的js解析器執(zhí)行
順序:預(yù)解析————執(zhí)行代碼
預(yù)解析過程:
1.把變量聲明提升到最前面瞎嬉,注意:只提升聲明不賦值
2.把函數(shù)聲明提升到最前面,只提升不調(diào)用
3.先提升var厚柳、function
4氧枣、解析完之后,根據(jù)代碼順序别垮,從上往下執(zhí)行

變量聲明提升:
因?yàn)轭A(yù)解析把變量聲明提升到最前面便监,因此代碼中在定義變量前調(diào)用變量會(huì)默認(rèn)返回undefined值

函數(shù)聲明提示:
因?yàn)轭A(yù)解析把函數(shù)聲明提升到最前面,所以在前面調(diào)用后面的函數(shù)可以成功
注意:變量名和函數(shù)名相同時(shí)碳想,先提升的變量名會(huì)被后提升的函數(shù)名覆蓋

函數(shù)表達(dá)式的提升
函數(shù)表達(dá)式進(jìn)行的時(shí)變量聲明的提升


2022-02-16-21-21-14-image.png

IIFE自調(diào)用函數(shù)

函數(shù)矮化成表達(dá)式烧董,可以實(shí)現(xiàn)自調(diào)用
矮化函數(shù):
數(shù)學(xué)運(yùn)算符:+、-胧奔、()
邏輯運(yùn)算符:逊移!
IIFE結(jié)構(gòu)可以關(guān)住函數(shù)的作用域,不能在外面調(diào)用函數(shù)
IIFE最常用的矮化方式是()龙填,配合匿名函數(shù)

(funciton(a){
console.log(a);
})(1);
2022-02-16-21-31-30-image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末胳泉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子岩遗,更是在濱河造成了極大的恐慌扇商,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宿礁,死亡現(xiàn)場(chǎng)離奇詭異案铺,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)窘拯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門红且,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涤姊,“玉大人,你說我怎么就攤上這事壁酬。” “怎么了恨课?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵舆乔,是天一觀的道長(zhǎng)剂公。 經(jīng)常有香客問我,道長(zhǎng)纲辽,這世上最難降的妖魔是什么颜武? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任璃搜,我火速辦了婚禮鳞上,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘篙议。我一直安慰自己鬼贱,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布吩愧。 她就那樣靜靜地躺著雁佳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪堵腹。 梳的紋絲不亂的頭發(fā)上星澳,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音腿堤,去河邊找鬼如暖。 笑死,一個(gè)胖子當(dāng)著我的面吹牛酗洒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播樱衷,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼矩桂,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼痪伦!你這毒婦竟也來了阔籽?” 一聲冷哼從身側(cè)響起牲蜀,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤涣达,失蹤者是張志新(化名)和其女友劉穎证薇,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寇窑,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡箩张,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年先慷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片福青。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡脓诡,死狀恐怖祝谚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情踊跟,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站拳昌,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏御铃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一咬腋、第九天 我趴在偏房一處隱蔽的房頂上張望睡互。 院中可真熱鬧,春花似錦寇壳、人聲如沸妻怎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽偿洁。三九已至涕滋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宾肺,已是汗流浹背锨用。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留啄巧,地道東北人掌栅。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓猾封,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子痢站,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容