亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

爬蟲不得不學(xué)之 JavaScript 入門篇

tracymac7 / 2870人閱讀

摘要:為數(shù)值固定的表示法,用來表示整數(shù)和浮點(diǎn)數(shù)的。無論你寫何種進(jìn)制,它的存儲(chǔ)還是以二進(jìn)制來存儲(chǔ)的,所以這樣就弄成了浮點(diǎn)數(shù)的存儲(chǔ)精確度,浮點(diǎn)數(shù)只能精確到位小數(shù)。關(guān)系運(yùn)算符關(guān)系運(yùn)算符有和。賦值運(yùn)算符賦值運(yùn)算符有六個(gè)。

現(xiàn)在的爬蟲越來越難了,不再和之前的那樣,隨便抓個(gè)包就可以找到相關(guān)的 url ,然后 post 一下或者 get 一下數(shù)據(jù)就出來了。還有一個(gè)可能就是可能你以前用來學(xué)習(xí)的爬蟲網(wǎng)站太簡(jiǎn)單了,還沒有看見過那些猛的。上兩周我就想弄弄知乎登陸,參數(shù)的加密算是把 js 代碼扣出來了,但是只能在瀏覽器上運(yùn)行,一換到 Python 執(zhí)行就各種報(bào)錯(cuò),你不會(huì) JavaScript 就什么都調(diào)不了,所以二話不說,開啟了新的大陸。那就開始吧!

1. JavaScript 介紹

JavaScript 是運(yùn)行在 客戶端的語言,和你們說的 Java 是很不一樣的, Java 通常用于服務(wù)器端的。但是他們兩者也有相似之處,比如 JavaScript 的命名規(guī)范和名稱和 Java 相似。其他的好像就沒有什么了,哈哈。

JavaScript 也是一門腳本語言,和 python 一樣,都是解釋性語言,即每運(yùn)行一行代碼就解釋一行,只不過 JavaScript 的解釋器在瀏覽器內(nèi)部。

JavaScript 最初被應(yīng)用是為了處理與表單相關(guān)的驗(yàn)證,現(xiàn)在應(yīng)用就更加廣了,可以說是幾乎無所不能,比如用來做服務(wù)端開發(fā),命令行工具、桌面程序和游戲開發(fā)等。

我在學(xué)了之后也跟著弄了兩個(gè)小的頁面游戲,懷念童年。

2.JavaScript組成

EcmaScript:JavaScript 的核心,定義了 JavaScript 的基本語法和數(shù)據(jù)類型,也是我們今天所學(xué)的內(nèi)容。

DOM:document odject model, 文檔對(duì)象模型,用于操作網(wǎng)頁中的頁面元素的,比如可以控制相關(guān)元素的增刪改查。

BOM:browser object model,, 瀏覽器對(duì)象模型, 用于操作瀏覽器窗口,比如彈出框,控制頁面滑動(dòng)等。

3.JavaScript 變量

在了解變量之前,先要知道 JavaScript 代碼寫在那里:

行內(nèi),即寫在 html 的元素中,不建議

嵌入,即寫在

注:console.log()這個(gè)方法只是在控制臺(tái)打印一下變量而已。

3.3 變量的命名規(guī)則和規(guī)范

1):規(guī)則-必須遵守的,不遵守就會(huì)報(bào)錯(cuò),就好比人類的法律

由字母、數(shù)字、下劃線和 $ 組成,但是不能以數(shù)字開頭,如:12asd 這個(gè)名字就會(huì)報(bào)錯(cuò)

不能是關(guān)鍵字或保留字,比如 var、for等

嚴(yán)格區(qū)分大小寫,就是說大寫和小寫都是不一樣的變量

2):規(guī)范-建議遵守的,但不遵守也不會(huì)報(bào)錯(cuò),比如人類的道德

變量名必須有意義,因?yàn)檫@樣別人才能看得懂,而且也利于維護(hù),沒有意義的就像我們需要破解相關(guān)參數(shù)時(shí)看到的 js 混淆,想想就頭痛。

遵守駝峰命名法,首字母小寫,后面單詞的首字母大寫,如:userName

3.4 小案例

了解完變量之后可以做個(gè)小案例:交換兩個(gè)值

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

JavaScript 的數(shù)據(jù)類型分兩種,一個(gè)為簡(jiǎn)單數(shù)據(jù)類型,另一個(gè)為復(fù)雜數(shù)據(jù)類型。

簡(jiǎn)單數(shù)據(jù)類型有?Number、String、Boolean、undefined 和 null。一共五種

復(fù)雜數(shù)據(jù)類型比如?object,這個(gè)以后遇到再說,慢慢來。

4.1 Number

Number 為數(shù)值固定的表示法,用來表示整數(shù)和浮點(diǎn)數(shù)的。它的字面量就是數(shù)值,那字面量是什么意思呢?字面量就是這個(gè)變量表示的值,

比如上面變量 a 的字面量就是 12,b 的字面量就是 45。

我們還可以使用?typeof?關(guān)鍵字來判斷這個(gè)數(shù)據(jù)類型

除了使用上面的十進(jìn)制來賦值,我們還可以使用八進(jìn)制和十六進(jìn)制

八進(jìn)制的數(shù)是以?0?開頭的,而十六進(jìn)制的是以?0x?開頭的,其他的進(jìn)制就不討論了。

無論你寫何種進(jìn)制,它的存儲(chǔ)還是以二進(jìn)制來存儲(chǔ)的,所以這樣就弄成了浮點(diǎn)數(shù)的存儲(chǔ)精確度,浮點(diǎn)數(shù)只能精確到17位小數(shù)。

可以看到 兩個(gè)浮點(diǎn)數(shù)的相加不是很準(zhǔn)確,所以不要在有浮點(diǎn)數(shù)的運(yùn)算下做判斷,有可能會(huì)有你想不到的結(jié)果,如

浮點(diǎn)數(shù)除了直接表示我們還可以使用科學(xué)計(jì)數(shù)法,當(dāng)然,整數(shù)也是一樣可以使用的。

Number 數(shù)據(jù)類型是有范圍的,但是不需要我們刻意去計(jì),記住它的關(guān)鍵字就可以了。

最后再說一個(gè)關(guān)鍵字:NaN:not a number,這個(gè)表示不是數(shù)值,當(dāng)有兩個(gè)數(shù)據(jù)運(yùn)算時(shí),運(yùn)算失敗就會(huì)返回這個(gè)值。我們也可以判斷一個(gè)數(shù)據(jù)類型是不是 NaN,使用?isNaN()?方法即可。

4.2 String

String 類型就是用單引號(hào)或雙引號(hào)括起來的內(nèi)容就是了,和 python 的字符串類型也是差不多的。

length?屬性是獲取字符串的長(zhǎng)度。

連接兩個(gè)字符串可以使用?+?進(jìn)行連接, + 號(hào)兩邊不需要全是 String 類型也可以進(jìn)行連接

思考:如何打印出下列字符串

我是一個(gè)"帥哥"

我喜歡"學(xué)‘python’"

這里面有單引號(hào)和雙引號(hào),如果直接進(jìn)行打印的話就會(huì)出錯(cuò),這時(shí)候我們就需要把這些有意義的字符給轉(zhuǎn)義符,轉(zhuǎn)成普通的字符

根據(jù)上面的轉(zhuǎn)義符,就可以寫出下面語句了

4.3 Boolean

boolean 類型,字面量只有?true?和?false,表示真假,即表示計(jì)算機(jī)的 1 和 0。

當(dāng)我們描述只有兩種結(jié)果的事物是可以使用這個(gè)。

4.4 undefined 和 null

undefined 表示一個(gè)聲明了沒有賦值的變量,所以變量的默認(rèn)值就是undefined。

null 只是表示為空,如果要想把該值設(shè)為 null, 只能手動(dòng)賦值。

5. 數(shù)據(jù)類型轉(zhuǎn)換
5.1 其他類型轉(zhuǎn) String 類型

使用?toString()?方法

需要注意:undefined 和 null 類型不能使用這個(gè)方法

使用?String()?強(qiáng)轉(zhuǎn),這個(gè)對(duì)任何類型都適用

使用?+ 連接符?連接空字符,這是最方便的,也是支持所有類型

5.2 其他類型轉(zhuǎn) Number 類型

使用?Number()?,當(dāng)轉(zhuǎn)不了的時(shí)候會(huì)返回 NaN,說明不是數(shù)值,在將 Boolean 類型轉(zhuǎn) Number 時(shí),true會(huì)轉(zhuǎn)為 1, false 會(huì)轉(zhuǎn)為 0。這個(gè)方法不支持將數(shù)字開頭帶有其它字符的字符串轉(zhuǎn)為數(shù)值類型,如 "12df"

使用?parseInt()?,只能轉(zhuǎn)為整數(shù),而且轉(zhuǎn)不了Boolean。但是可以轉(zhuǎn)以數(shù)字開頭而帶有字符的字符串。這個(gè)就可以應(yīng)用在比如需要將 "16px" 轉(zhuǎn)為數(shù)值,就可以使用這個(gè)。轉(zhuǎn)不了時(shí)也會(huì)返回 NaN。

使用?parseFloat()?可以轉(zhuǎn)為浮點(diǎn)數(shù),當(dāng)字符串為整數(shù)時(shí)也可以轉(zhuǎn)為整數(shù)。需要注意的是:當(dāng)字符串中有兩個(gè)小數(shù)點(diǎn)的時(shí)候,只會(huì)轉(zhuǎn)第二個(gè)小數(shù)點(diǎn)之前的數(shù)字,后面的都當(dāng)作字符串

使用 + 或 - 來將值取正或取負(fù)。這個(gè)的功能和 Number 差不多。

使用 - 來進(jìn)行減法運(yùn)算來轉(zhuǎn)。這個(gè)使用運(yùn)算符就會(huì)先把左右兩邊的類型先轉(zhuǎn)為數(shù)值類型再運(yùn)算,所以可以用來相減 0。至于 + 不行,是因?yàn)檫@個(gè)用來做字符串的拼接了。

5.3 其他類型轉(zhuǎn) Boolean 類型

這個(gè)使用?Boolean()?來轉(zhuǎn)就可以了,所有類型都可以轉(zhuǎn)。轉(zhuǎn)為 false 的情況為 null、undefined、NaN、0 和 空字符串,其他情況均為 true。

其實(shí)這個(gè)還可以使用隱式轉(zhuǎn)換,就是不需要自己手動(dòng)轉(zhuǎn),解釋器會(huì)自動(dòng)幫我們轉(zhuǎn),隱式轉(zhuǎn)換通常用在判斷語句的情況,隱式轉(zhuǎn)換可以減少代碼的書寫,等說到判斷語句再說,下面就有!

6. 操作符

操作符就是用來對(duì)數(shù)據(jù)類型進(jìn)行操作的符號(hào),每個(gè)語言的操作符都差不多,這里再說下可以更深刻一點(diǎn)!

6.1 算術(shù)運(yùn)算符

有?+ - * / %?五個(gè),任何一個(gè)數(shù) 除 0 都為為無窮大,模 0 為 NaN

6.2 一元運(yùn)算符

一元運(yùn)算符就是只需要一個(gè)操作數(shù)的運(yùn)算符,有?++、-- 和 !

前置++:如 a++,變量在前,這個(gè)是先將變量的結(jié)果返回再對(duì)自身加 1,

后置++:如 ++a,變量在后,這個(gè)是先將變量進(jìn)行自身加 1,再把結(jié)果返回

還有 -- 也是一樣的,只是 它是自身減 1,在運(yùn)算中需要注意變量在一元運(yùn)算符的順序。

! 就是對(duì)操作數(shù)取反,而且返回的是 Boolean 類型

6.3 邏輯運(yùn)算符

邏輯運(yùn)算符有?&& 、|| 和 !,! 因?yàn)橹粚?duì)一個(gè)操作數(shù)操作所以也屬于一元運(yùn)算符。

&&:這個(gè)是與運(yùn)算符,只有當(dāng)兩邊都為 true 的時(shí)候才會(huì)返回 true,其他情況都返回 false。

||:這個(gè)是或運(yùn)算符,只有當(dāng)兩邊都為 false 的時(shí)候才返回 false, 其他情況都返回 true。

6.4 關(guān)系運(yùn)算符

關(guān)系運(yùn)算符有?< > <= >= == != === 和 !==。運(yùn)算完都是返回 Boolean 類型的,這里就不細(xì)說了,都差不多的,只說下 == 和 === 的區(qū)別,還有 !== 和 != 的區(qū)別。== 只判斷兩值的字面量相等不相等,不會(huì)判斷數(shù)據(jù)類型,而 === 會(huì)先去判斷數(shù)據(jù)類型再判斷字面量,!= 和 !== 的區(qū)別也是這樣。

6.5 賦值運(yùn)算符

賦值運(yùn)算符有?+= -= *= /= %= =?六個(gè)。

+= 就是把左右兩邊的值相加起來再賦值給左邊的值,其他的也一樣,就不多說了。

6.6 運(yùn)算符優(yōu)先級(jí)從高到低(運(yùn)算順序)

()

一元運(yùn)算符

算術(shù)運(yùn)算符,同級(jí)時(shí)先 * / 再 + -

關(guān)系運(yùn)算符:> >= < <=

相等運(yùn)算符:== === != !==

邏輯運(yùn)算符:同級(jí)時(shí)先 && 再 ||

賦值運(yùn)算符

7. 流程結(jié)構(gòu)

JavaScript 的流程結(jié)構(gòu)有三種,分別是順序結(jié)構(gòu),分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu),這個(gè)也和 python 差不多的。

順序結(jié)構(gòu)就是代碼是按順序從上到下執(zhí)行的,分支結(jié)構(gòu)就是按照給定條件的是否成立而執(zhí)行不同的語句,循環(huán)結(jié)構(gòu)就是重復(fù)執(zhí)行某一段代碼。

順序結(jié)構(gòu)就不多說了,我們剛才運(yùn)行的代碼就是順序結(jié)構(gòu)的,現(xiàn)在先說下分支結(jié)構(gòu)。

7.1 分支結(jié)構(gòu)

使用分支結(jié)構(gòu)可以使用 if 和 else 組成的語句,寫法和 python 差不多。

多帶帶 if 語句

說到判斷,就有個(gè)隱式轉(zhuǎn)換,就是 if 括號(hào)里面的值會(huì)將任意類型的值隱式轉(zhuǎn)換成 Boolean 類型。如下:

另一種形式的分支語句:

if-else 一起用

這個(gè) if-else 合用還有個(gè)簡(jiǎn)單點(diǎn)的寫法,叫做三元運(yùn)算符,語法為

當(dāng)表達(dá)式1 為 true 的時(shí)候,就會(huì)把 表達(dá)式2 的值給返回,否則返回 表達(dá)式3 的值,這個(gè)有一個(gè)缺陷,就是必須要有結(jié)果返回。

還有一種形式的分支語句:

if-else if-if 三個(gè)合用

上面的 三個(gè)合用我們也可以使用?switch?語句來改寫,這個(gè)是選擇關(guān)鍵詞。語法為

改寫后:

因?yàn)?case 的值只能是一個(gè)值,不能是范圍,所以用了個(gè)除法來解決,要不然需要寫大量的 case,還需要注意一點(diǎn)是一定需要記得寫 break,否則在匹配到相應(yīng)的值之后它會(huì)一直往下運(yùn)行不管 case 值是否對(duì)應(yīng),直到遇到 break 或者 全部運(yùn)行完。

7.2 循環(huán)結(jié)構(gòu)

JavaScript 的循環(huán)結(jié)構(gòu)也有?while?和?for語句,但他還有?do-while語句。

for語句:一般在確定了循環(huán)的次數(shù)就會(huì)使用這個(gè)比較方便,語法為:

這個(gè)先去執(zhí)行初始化表達(dá)式1, 然后去執(zhí)行判斷表達(dá)式2,符合條件就會(huì)執(zhí)行循環(huán)體,循環(huán)體執(zhí)行完之后就執(zhí)行自增表達(dá)式3,再去判斷,接下來就是重復(fù)剛才的動(dòng)作,直到不滿足判斷表達(dá)式2。

while 語句:在無法確定循環(huán)次數(shù)的時(shí)候就可以用這個(gè),使用這個(gè)需要注意循環(huán)結(jié)束的條件,以免寫了死循環(huán)。語法為:

滿足循環(huán)條件之后就執(zhí)行循環(huán)體,然后再去執(zhí)行循環(huán)條件,接下來就是重復(fù)剛才的動(dòng)作直到不滿足條件。

do-while 語句:這個(gè)也是在不知道循環(huán)次數(shù)的時(shí)候使用,但是當(dāng)循環(huán)體無論如何都需要執(zhí)行一次的話就可以選擇使用這個(gè)。語法為:

先去執(zhí)行循環(huán)體,再去判斷循環(huán)條件,接下來就是重復(fù)剛才的動(dòng)作直到循環(huán)條件不滿足。

在循環(huán)結(jié)構(gòu)中還可以使用 break 和 continue 來對(duì)循環(huán)進(jìn)行跳出的操作。break 就是跳出整個(gè)循環(huán),就是循環(huán)結(jié)束,而 continue 是跳出本次循環(huán),接著下一次的循環(huán)。

學(xué)習(xí)了循環(huán)之后,我們也可以嘗試著自己打印一個(gè)三角形,或者 99 乘法表來滿足一下自己。

這兩個(gè)的思路都是差不多的,只要你搞定了第一個(gè)三角形的思路,下面的乘法表自然就迎刃而解了,這里就不多說了。

下篇就開始進(jìn)入復(fù)雜的數(shù)據(jù)類型了,即 object,準(zhǔn)備好了嗎?

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/101632.html

相關(guān)文章

  • 爬蟲得不學(xué)之 JavaScript 函數(shù)對(duì)象

    摘要:所以語句也會(huì)常常用于終止函數(shù)的運(yùn)行,還有也可以不寫語句,但是會(huì)默認(rèn)返回函數(shù)內(nèi)部的對(duì)象中,函數(shù)的內(nèi)部都有一個(gè)對(duì)象,用來記錄在調(diào)用函數(shù)時(shí)所傳進(jìn)來的參數(shù),可以說是一個(gè)偽數(shù)組。里面使用了關(guān)鍵字,這個(gè)的指向就是使用構(gòu)造函數(shù)創(chuàng)建的對(duì)象,也不需要返回對(duì) 今天好像是情人節(jié)?所以最適合面向?qū)ο?,JavaScript 也有對(duì)象,我們也可以隨時(shí)面向?qū)ο螅奖愕煤?,那怎樣才有?duì)象呢?下面告訴你! 1. 數(shù)組 ...

    Terry_Tai 評(píng)論0 收藏0
  • 基礎(chǔ)知識(shí) - 收藏集 - 掘金

    摘要:本文是面向前端小白的,大手子可以跳過,寫的不好之處多多分鐘搞定常用基礎(chǔ)知識(shí)前端掘金基礎(chǔ)智商劃重點(diǎn)在實(shí)際開發(fā)中,已經(jīng)非常普及了。 JavaScript字符串所有API全解密 - 掘金關(guān)于 我的博客:louis blog SF專欄:路易斯前端深度課 原文鏈接:JavaScript字符串所有API全解密 本文近 6k 字,讀完需 10 分鐘。 字符串作為基本的信息交流的橋梁,幾乎被所有的編程...

    wdzgege 評(píng)論0 收藏0
  • 首次公開,整理12年積累的博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時(shí)間永遠(yuǎn)都過得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評(píng)論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.40 - 2018,來學(xué)習(xí)一門新的編程語言吧!

    摘要:入門,第一個(gè)這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數(shù)式編程語言,它的代碼運(yùn)行在之上。它通過編輯類工具,帶來了先進(jìn)的編輯體驗(yàn),增強(qiáng)了語言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來了,總結(jié)過去的 2017,相信小伙們一定有很多收獲...

    caspar 評(píng)論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.40 - 2018,來學(xué)習(xí)一門新的編程語言吧!

    摘要:入門,第一個(gè)這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數(shù)式編程語言,它的代碼運(yùn)行在之上。它通過編輯類工具,帶來了先進(jìn)的編輯體驗(yàn),增強(qiáng)了語言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來了,總結(jié)過去的 2017,相信小伙們一定有很多收獲...

    nihao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<