摘要:為數值固定的表示法,用來表示整數和浮點數的。無論你寫何種進制,它的存儲還是以二進制來存儲的,所以這樣就弄成了浮點數的存儲精確度,浮點數只能精確到位小數。關系運算符關系運算符有和。賦值運算符賦值運算符有六個。
現在的爬蟲越來越難了,不再和之前的那樣,隨便抓個包就可以找到相關的 url ,然后 post 一下或者 get 一下數據就出來了。還有一個可能就是可能你以前用來學習的爬蟲網站太簡單了,還沒有看見過那些猛的。上兩周我就想弄弄知乎登陸,參數的加密算是把 js 代碼扣出來了,但是只能在瀏覽器上運行,一換到 Python 執行就各種報錯,你不會 JavaScript 就什么都調不了,所以二話不說,開啟了新的大陸。那就開始吧!
1. JavaScript 介紹JavaScript 是運行在 客戶端的語言,和你們說的 Java 是很不一樣的, Java 通常用于服務器端的。但是他們兩者也有相似之處,比如 JavaScript 的命名規范和名稱和 Java 相似。其他的好像就沒有什么了,哈哈。
JavaScript 也是一門腳本語言,和 python 一樣,都是解釋性語言,即每運行一行代碼就解釋一行,只不過 JavaScript 的解釋器在瀏覽器內部。
JavaScript 最初被應用是為了處理與表單相關的驗證,現在應用就更加廣了,可以說是幾乎無所不能,比如用來做服務端開發,命令行工具、桌面程序和游戲開發等。
我在學了之后也跟著弄了兩個小的頁面游戲,懷念童年。
2.JavaScript組成EcmaScript:JavaScript 的核心,定義了 JavaScript 的基本語法和數據類型,也是我們今天所學的內容。
DOM:document odject model, 文檔對象模型,用于操作網頁中的頁面元素的,比如可以控制相關元素的增刪改查。
BOM:browser object model,, 瀏覽器對象模型, 用于操作瀏覽器窗口,比如彈出框,控制頁面滑動等。
3.JavaScript 變量在了解變量之前,先要知道 JavaScript 代碼寫在那里:
行內,即寫在 html 的元素中,不建議
嵌入,即寫在
注:console.log()這個方法只是在控制臺打印一下變量而已。
3.3 變量的命名規則和規范1):規則-必須遵守的,不遵守就會報錯,就好比人類的法律
由字母、數字、下劃線和 $ 組成,但是不能以數字開頭,如:12asd 這個名字就會報錯
不能是關鍵字或保留字,比如 var、for等
嚴格區分大小寫,就是說大寫和小寫都是不一樣的變量
2):規范-建議遵守的,但不遵守也不會報錯,比如人類的道德
變量名必須有意義,因為這樣別人才能看得懂,而且也利于維護,沒有意義的就像我們需要破解相關參數時看到的 js 混淆,想想就頭痛。
遵守駝峰命名法,首字母小寫,后面單詞的首字母大寫,如:userName
3.4 小案例了解完變量之后可以做個小案例:交換兩個值
4. 數據類型JavaScript 的數據類型分兩種,一個為簡單數據類型,另一個為復雜數據類型。
簡單數據類型有?Number、String、Boolean、undefined 和 null。一共五種
復雜數據類型比如?object,這個以后遇到再說,慢慢來。
4.1 NumberNumber 為數值固定的表示法,用來表示整數和浮點數的。它的字面量就是數值,那字面量是什么意思呢?字面量就是這個變量表示的值,
比如上面變量 a 的字面量就是 12,b 的字面量就是 45。
我們還可以使用?typeof?關鍵字來判斷這個數據類型
除了使用上面的十進制來賦值,我們還可以使用八進制和十六進制
八進制的數是以?0?開頭的,而十六進制的是以?0x?開頭的,其他的進制就不討論了。
無論你寫何種進制,它的存儲還是以二進制來存儲的,所以這樣就弄成了浮點數的存儲精確度,浮點數只能精確到17位小數。
可以看到 兩個浮點數的相加不是很準確,所以不要在有浮點數的運算下做判斷,有可能會有你想不到的結果,如
浮點數除了直接表示我們還可以使用科學計數法,當然,整數也是一樣可以使用的。
Number 數據類型是有范圍的,但是不需要我們刻意去計,記住它的關鍵字就可以了。
最后再說一個關鍵字:NaN:not a number,這個表示不是數值,當有兩個數據運算時,運算失敗就會返回這個值。我們也可以判斷一個數據類型是不是 NaN,使用?isNaN()?方法即可。
4.2 StringString 類型就是用單引號或雙引號括起來的內容就是了,和 python 的字符串類型也是差不多的。
length?屬性是獲取字符串的長度。
連接兩個字符串可以使用?+?進行連接, + 號兩邊不需要全是 String 類型也可以進行連接
我是一個"帥哥"
我喜歡"學‘python’"
這里面有單引號和雙引號,如果直接進行打印的話就會出錯,這時候我們就需要把這些有意義的字符給轉義符,轉成普通的字符
根據上面的轉義符,就可以寫出下面語句了
4.3 Booleanboolean 類型,字面量只有?true?和?false,表示真假,即表示計算機的 1 和 0。
當我們描述只有兩種結果的事物是可以使用這個。
4.4 undefined 和 nullundefined 表示一個聲明了沒有賦值的變量,所以變量的默認值就是undefined。
null 只是表示為空,如果要想把該值設為 null, 只能手動賦值。
5. 數據類型轉換使用?toString()?方法
需要注意:undefined 和 null 類型不能使用這個方法
使用?String()?強轉,這個對任何類型都適用
使用?+ 連接符?連接空字符,這是最方便的,也是支持所有類型
使用?Number()?,當轉不了的時候會返回 NaN,說明不是數值,在將 Boolean 類型轉 Number 時,true會轉為 1, false 會轉為 0。這個方法不支持將數字開頭帶有其它字符的字符串轉為數值類型,如 "12df"
使用?parseInt()?,只能轉為整數,而且轉不了Boolean。但是可以轉以數字開頭而帶有字符的字符串。這個就可以應用在比如需要將 "16px" 轉為數值,就可以使用這個。轉不了時也會返回 NaN。
使用?parseFloat()?可以轉為浮點數,當字符串為整數時也可以轉為整數。需要注意的是:當字符串中有兩個小數點的時候,只會轉第二個小數點之前的數字,后面的都當作字符串
使用 + 或 - 來將值取正或取負。這個的功能和 Number 差不多。
使用 - 來進行減法運算來轉。這個使用運算符就會先把左右兩邊的類型先轉為數值類型再運算,所以可以用來相減 0。至于 + 不行,是因為這個用來做字符串的拼接了。
這個使用?Boolean()?來轉就可以了,所有類型都可以轉。轉為 false 的情況為 null、undefined、NaN、0 和 空字符串,其他情況均為 true。
其實這個還可以使用隱式轉換,就是不需要自己手動轉,解釋器會自動幫我們轉,隱式轉換通常用在判斷語句的情況,隱式轉換可以減少代碼的書寫,等說到判斷語句再說,下面就有!
6. 操作符操作符就是用來對數據類型進行操作的符號,每個語言的操作符都差不多,這里再說下可以更深刻一點!
有?+ - * / %?五個,任何一個數 除 0 都為為無窮大,模 0 為 NaN
一元運算符就是只需要一個操作數的運算符,有?++、-- 和 !
前置++:如 a++,變量在前,這個是先將變量的結果返回再對自身加 1,
后置++:如 ++a,變量在后,這個是先將變量進行自身加 1,再把結果返回
還有 -- 也是一樣的,只是 它是自身減 1,在運算中需要注意變量在一元運算符的順序。
! 就是對操作數取反,而且返回的是 Boolean 類型
邏輯運算符有?&& 、|| 和 !,! 因為只對一個操作數操作所以也屬于一元運算符。
&&:這個是與運算符,只有當兩邊都為 true 的時候才會返回 true,其他情況都返回 false。
||:這個是或運算符,只有當兩邊都為 false 的時候才返回 false, 其他情況都返回 true。
關系運算符有?< > <= >= == != === 和 !==。運算完都是返回 Boolean 類型的,這里就不細說了,都差不多的,只說下 == 和 === 的區別,還有 !== 和 != 的區別。== 只判斷兩值的字面量相等不相等,不會判斷數據類型,而 === 會先去判斷數據類型再判斷字面量,!= 和 !== 的區別也是這樣。
賦值運算符有?+= -= *= /= %= =?六個。
+= 就是把左右兩邊的值相加起來再賦值給左邊的值,其他的也一樣,就不多說了。
()
一元運算符
算術運算符,同級時先 * / 再 + -
關系運算符:> >= < <=
相等運算符:== === != !==
邏輯運算符:同級時先 && 再 ||
賦值運算符
7. 流程結構JavaScript 的流程結構有三種,分別是順序結構,分支結構和循環結構,這個也和 python 差不多的。
順序結構就是代碼是按順序從上到下執行的,分支結構就是按照給定條件的是否成立而執行不同的語句,循環結構就是重復執行某一段代碼。
順序結構就不多說了,我們剛才運行的代碼就是順序結構的,現在先說下分支結構。
使用分支結構可以使用 if 和 else 組成的語句,寫法和 python 差不多。
多帶帶 if 語句
說到判斷,就有個隱式轉換,就是 if 括號里面的值會將任意類型的值隱式轉換成 Boolean 類型。如下:
另一種形式的分支語句:
if-else 一起用
這個 if-else 合用還有個簡單點的寫法,叫做三元運算符,語法為
當表達式1 為 true 的時候,就會把 表達式2 的值給返回,否則返回 表達式3 的值,這個有一個缺陷,就是必須要有結果返回。
還有一種形式的分支語句:
if-else if-if 三個合用
上面的 三個合用我們也可以使用?switch?語句來改寫,這個是選擇關鍵詞。語法為
改寫后:
因為 case 的值只能是一個值,不能是范圍,所以用了個除法來解決,要不然需要寫大量的 case,還需要注意一點是一定需要記得寫 break,否則在匹配到相應的值之后它會一直往下運行不管 case 值是否對應,直到遇到 break 或者 全部運行完。
JavaScript 的循環結構也有?while?和?for語句,但他還有?do-while語句。
for語句:一般在確定了循環的次數就會使用這個比較方便,語法為:
這個先去執行初始化表達式1, 然后去執行判斷表達式2,符合條件就會執行循環體,循環體執行完之后就執行自增表達式3,再去判斷,接下來就是重復剛才的動作,直到不滿足判斷表達式2。
while 語句:在無法確定循環次數的時候就可以用這個,使用這個需要注意循環結束的條件,以免寫了死循環。語法為:
滿足循環條件之后就執行循環體,然后再去執行循環條件,接下來就是重復剛才的動作直到不滿足條件。
do-while 語句:這個也是在不知道循環次數的時候使用,但是當循環體無論如何都需要執行一次的話就可以選擇使用這個。語法為:
先去執行循環體,再去判斷循環條件,接下來就是重復剛才的動作直到循環條件不滿足。
在循環結構中還可以使用 break 和 continue 來對循環進行跳出的操作。break 就是跳出整個循環,就是循環結束,而 continue 是跳出本次循環,接著下一次的循環。
學習了循環之后,我們也可以嘗試著自己打印一個三角形,或者 99 乘法表來滿足一下自己。
這兩個的思路都是差不多的,只要你搞定了第一個三角形的思路,下面的乘法表自然就迎刃而解了,這里就不多說了。
下篇就開始進入復雜的數據類型了,即 object,準備好了嗎?
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/101632.html
摘要:所以語句也會常常用于終止函數的運行,還有也可以不寫語句,但是會默認返回函數內部的對象中,函數的內部都有一個對象,用來記錄在調用函數時所傳進來的參數,可以說是一個偽數組。里面使用了關鍵字,這個的指向就是使用構造函數創建的對象,也不需要返回對 今天好像是情人節?所以最適合面向對象,JavaScript 也有對象,我們也可以隨時面向對象,方便得很,那怎樣才有對象呢?下面告訴你! 1. 數組 ...
摘要:本文是面向前端小白的,大手子可以跳過,寫的不好之處多多分鐘搞定常用基礎知識前端掘金基礎智商劃重點在實際開發中,已經非常普及了。 JavaScript字符串所有API全解密 - 掘金關于 我的博客:louis blog SF專欄:路易斯前端深度課 原文鏈接:JavaScript字符串所有API全解密 本文近 6k 字,讀完需 10 分鐘。 字符串作為基本的信息交流的橋梁,幾乎被所有的編程...
摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...
摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進的編輯體驗,增強了語言服務。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經到來了,總結過去的 2017,相信小伙們一定有很多收獲...
摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進的編輯體驗,增強了語言服務。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經到來了,總結過去的 2017,相信小伙們一定有很多收獲...
閱讀 3921·2021-11-17 09:33
閱讀 3283·2021-10-08 10:05
閱讀 3111·2021-09-22 15:36
閱讀 1140·2021-09-06 15:02
閱讀 2772·2019-08-29 12:45
閱讀 1590·2019-08-26 13:40
閱讀 3399·2019-08-26 13:37
閱讀 420·2019-08-26 13:37