讀書筆記(06) - 語法基礎 - JavaScript高級程序設計

語法基礎

寫在開頭

本篇是小紅書筆記的第六篇,也許你會奇怪第六篇筆記才寫語法基礎,筆者是不是穿越了。

答案當然是沒有,筆者在此分享自己的閱讀心得,不少人翻書都是從頭開始,結果永遠就只在前幾章。
對此,筆者換了隨機閱讀的方式,哪章感興趣了或者想補知識點,再去翻閱對應的章節。當然目錄還是要翻的。

工作生活節奏太快,知識太多,時間與知識的增長成反比,求全不如求專,也許不能看完全書,但至少掌握所需知識點。


語法基礎
思維導圖是個好東西,一圖流。

語法

標識符

  1. 由字母,下劃線_,美元符號$,數字組成
  2. 第一個字符不能是數字
  3. 注意不要使用關鍵字作標識符
  4. 對象屬性[]號寫法可不遵循標識符規則 obj[123] = 123

數據類型

數據類型共有10個,ES5有7個,3個為ES6新增

number/boolean/string/undefined/object/null/function/symbol/set/map
  1. 判斷類型可用typeof
  2. 判斷對象為何種引用類型可用instanceof

undefined與null

  1. undefined (使用var聲明但未初始化)
  2. null (空對象指針)
undefined == null // true

NaN

NaN表示本來應返回一個數值,結果未正確返回

  1. NaN不等于任何值,且不等于自身
  2. isNaN()可判斷是否為NaN

數值轉換

Number() 轉型函數

參數值結果
true1
false0
null0
undefinedNaN
''0
'168'168
'168hello'NaN
'hello'NaN

TIPS:參數值為一個對象,則先調用valueOf(), 沒有再調用toString(), 然后遵循上述規則

parseInt()

  1. 第一個參數為轉換的值
  2. 第二個參數為轉換的進制
  3. 會嘗試解析字符串前面的數字(不同于Number())
parseInt('168hello') -> 168

parseFloat()

  1. 第一個小數點有效,忽略后面小數點的解析
  2. 會嘗試解析字符串前面的數字
  3. 忽略前導0,只支持10進制,沒有第二個參數 (不同于parseInt())
parseFloat('520.13.14') -> 520.14

字符串轉換

toString() 方法

  1. 大多數數據類型擁有toString()方法,可在參數中指定轉換進制
  2. null/undefined 沒有toString()方法

String() 轉型函數

  1. 如果參數值有toString()方法,則調用toString()方法
  2. null 轉為 "null"
  3. undefined 轉為 "undefined"

函數 function

  1. 不支持重載
  2. 后定義的函數會覆蓋之前
  3. 參數數組對象:arguments

語句

  1. if...else...
  2. do...while... 后測試循環,不同于while/for前測試循環
  3. while
  4. for
  5. for...in... 遍歷對象屬性
  6. labelbreak/continue 合用
  7. switch...case... case 全等判斷
  8. with 將代碼作用域設置到特定的對象中

switch...case

  1. case 判斷時是全等判斷,不會進行類型轉換
  2. case 值不一定是常量,可以是變量,甚至是表達式
case 'hello' + 'word';
case num < 10;

label

label語句允許在代碼中添加標簽,labelbreak/continue聯合使用,可返回代碼指定位置

var num = 0;outermost:
for (var i = 0; i < 10; i++) {for (var j = 0; j < 10; j++) {if ( i== 5 && j == 5) {break outermost;    // 退出循環(因為outermost定義的位置在最外層)// 普通的break只能跳出一層循環}}
}

with

with語句的作用是將代碼的作用域設置到一個特定的對象

// window.location 對象為例子
with(location) {var url = href; // location.href
}

操作符

  1. 一元操作符
  2. 布爾運算符
  3. 算數運算符
  4. 關系運算符
  5. 條件運算符
  6. 賦值預算符
  7. 逗號運算符

一元操作

一元操作符指的是只能操作一個值的操作符

  1. 遞增++
  2. 遞減--
  3. 后置:語句被求值后執行自身賦值
var a = 2;
var b = 20;
var c = a-- + 20;   // 后置運算 c: 22, a: 1

布爾運算符

邏輯非!

!! 功能等于 Boolean() 轉型函數

邏輯與 &&
  1. 第一參數是對象,返回第二個參數
  2. 第一個參數為null/NaN/undefined, 則直接返回第一個參數
邏輯或 ||

規則與邏輯與相同,不同的是只要第一個參數成立則不會進行后續運算

TIPS:邏輯與或都屬于短路運算,并不一定返回true/false,參數未聲明可能會報錯或賦值不成功

算數運算符

+, -, *, /, % 

關系運算符

<, >, <=, >=, ==, ===, !=, !===
  1. 兩個參數都是數值,進行值比較
  2. 兩個參數都是字符串,進行字符編碼比較(大寫字母的字符編碼小于小寫字母)
  3. 一個參數是數值,則轉為數值比較
  4. 一個參數是對象,則先調用其valueOf(),沒有valueOf()再調用toString()
  5. === 全等會進行值與類型的比較
  6. null == undefined // true

條件運算符

三元表達式

var score = 90;
var achie = score > 90 ? '優秀' : '再接再厲';

逗號操作符

逗號操作符可以在一條語句執行多個操作,常用于變量初始化

TIPS: 用于賦值時,逗號操作符會返回表達式最后一項的值

var name = 'KenTsang', age = 28, job = 'Developer';

詳解逗號表達式,可移步筆者的文章:《一道JS面試題引發的血案》。

if-else/switch-case/?:/&&/||可移步筆者的文章: 《JS中 if/ if...else替換方式》


參考文檔

  • 《JavaScript高級程序設計》
作者:以樂之名
本文原創,有不當的地方歡迎指出。轉載請指明出處。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276587.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276587.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276587.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

最近做了一個安裝包的安裝流程圖

最近到做安裝包的詳細設計。下圖是安裝包的流程圖&#xff0c;如果有什么意見和建議&#xff0c;希望大家給我留言&#xff0c;大家以前討論 轉載于:https://www.cnblogs.com/zengshengping815/archive/2009/04/22/1441319.html

如何使用Nikto漏洞掃描工具檢測網站安全

轉載鏈接&#xff1a;http://www.linuxidc.com/Linux/2011-02/32000.htm 【51CTO.com 獨家特稿】隨著信息技術的發展&#xff0c;網絡應用越來越廣泛&#xff0c;很多企業單位都依靠網站來運營&#xff0c;正因為業務的不斷提升和應用&#xff0c;致使網站的安全性顯得越來越重…

什么是區塊鏈預言機(BlockChain Oracle)

預言機 Oracle 是區塊鏈中非常重要的一個功能&#xff0c;但我發現很少有人討論&#xff0c;也可能很多人對此并不了解。而網上關于預言機的文章很少&#xff0c;很多也沒有講明白&#xff0c;甚至有些還是錯誤的。所以我整理了一篇詳細的文章&#xff0c;分享給大家&#xff0…

idea tomcat啟動成功但是訪問方面都是404_IDEA相關配置【集成Tomcatamp;項目部署】...

“知其然知其所以然”始終是Brick我學習新興技術的出發點&#xff0c;那么咱們來聊聊以下幾個問題問題1&#xff1a;在編寫完web項目之后&#xff0c;我們怎么才能運行項目呢&#xff1f;--需要部署項目到Tomcat上。問題2&#xff1a;部署項目到Tomcat服務器有多少種方式&#…

程序員素質面試題

技術題做完后&#xff0c;先檢查技術是否合格&#xff0c;技術合格的并非就一定是合適人選&#xff0c;還要做素質面試。 如下是小y出的面試題&#xff1a; &#xff08;上進心&#xff09;1.你的職業規劃是怎樣的&#xff0c;未來兩年想朝哪個方向發展&#xff1f; &#xff0…

用U盤或移動硬盤安裝Windows7 (超簡單制作Win7安裝U盤方法)

轉載鏈接&#xff1a;http://www.iplaysoft.com/win7-usb-dvd-download-tool.html 最近很多人想要安裝 Windows7 &#xff0c;下載回去后的ISO鏡像文件很多人都是使用 Nero 或 IMGBurn 等工具刻錄成光盤來安裝的。但實際上&#xff0c;不需刻盤安裝Win7的方法還是有不少的。…

安裝pywin32時:ImportError: DLL load failed: %1 不是有效的 Win32 應用程序和 DLL load failed...

問題一&#xff1a;ImportError: DLL load failed: %1 不是有效的 Win32 應用程序 import pywinapi報錯:ImportError: DLL load failed: %1 不是有效的 Win32 應用程序 原因&#xff1a;與python版本不對應 pypi官網上下載whl文件,我的python 版本為27 下載第一個后安裝 下載文…

pointcut注解_Spring AOP使用指南,詳細了解AOP相關注解

Spring AOP 指導教程什么是Spring AOP spring aop可以在spring構建的系統中使用面向切面編程。當然Spring Boot也是基于Spring構建的。使用AOP可以實現諸如事務&#xff0c;日志以及安全校驗等通過切面統一完成的任務。他可以通過簡單的注解方式實現在方法執行前后來執行你自己…

C# 實現FTP上傳與下載

向FTP服務器下載文件的簡單實例 Codestring filePath "d:\\"; string fileName "lhking.txt"; //文件下載之后要保存的路徑和文件名 FtpWebRequest reqFTP; try { FileStream outputStream …

Linux源碼安裝mysql 5.6.12(cmake編譯)

轉載鏈接&#xff1a;http://www.2cto.com/database/201307/229260.html Linux源碼安裝mysql 5.6.12&#xff08;cmake編譯&#xff09;1.安裝make編譯器(默認系統自帶)下載地址&#xff1a;http://www.gnu.org/software/make/[c-sharp] tar zxvf make-3.82.tar.gz cd make-3.…

云棲專輯 | 阿里開發者們的第6個感悟:享受折磨

2015年12月20日&#xff0c;云棲社區上線。2018年12月20日&#xff0c;云棲社區3歲。阿里巴巴常說“晴天修屋頂”。在我們看來&#xff0c;寒冬中&#xff0c;最值得投資的是學習&#xff0c;是增厚的知識儲備。所以社區特別制作了這個專輯——分享給開發者們20個彌足珍貴的成長…

python刪除數據庫的數據完整代碼_利用python操作小程序云數據庫實現簡單的增刪改查...

不止python&#xff0c;你可以利用任何語言那實現通過http請求來操作你自己的小程序云數據庫了背景也是在最近吧&#xff0c;小程序更新了云開發 HTTP API 文檔&#xff0c;提供了小程序外訪問云開發資源的能力&#xff0c;使用 HTTP API 開發者可在已有服務器上訪問云資源&…

AI技術在智能海報設計中的應用

背景 在視覺設計領域中&#xff0c;設計師們往往會因為一些簡單需求付出相當多的時間&#xff0c;比如修改文案內容&#xff0c;設計簡單的海報版式&#xff0c;針對不同機型、展位的多尺寸拓展等。這些工作需要耗費大量的時間、人力成本&#xff08;5~6張/人日&#xff09;&am…

javaScript如何監聽瀏覽器關閉事件

轉載鏈接&#xff1a;http://www.cnblogs.com/Tim_Liu/archive/2010/11/09/1872596.html 最近寫東西的時候發現需要對瀏覽器的關閉進行監聽,當用戶關閉的時候需要調用session.invalid();清空session信息,但是仔細一查手冊發現無論是body還是window都沒有onclose事件,之后onload…

C++樹的實現

C樹的實現 STL里面沒有提供容器樹的模板實現&#xff0c;自已寫一個&#xff1a;Tree.h //tree.h 頭文件 #include <list> #include <algorithm> using namespace std; struct TreeNode; //定義一個結構體原型 classTree; //定義一個類原型 classIterator; //定義一…

加密文件忘記密碼怎么解密_MyBatis 配置文件 用戶密碼加密存儲

properties配置文件一般是使用properties保存配置文件內容,然后在mybatis配置文件中進行讀取在resource文件下新建db.properties文件內容如下# 數據庫配置文件 driver com.mysql.cj.jdbc.Driver url jdbc:mysql:// /mybatis username password 然后,接著把文件放入源碼包…

PHP,如何防止同一用戶同一時間多次登錄

轉載鏈接&#xff1a;http://blog.sina.com.cn/s/blog_4832ea590101djnp.html PHP&#xff0c;如何防止同一用戶同一時間多次登錄&#xff1f; 創建表 username password sessionId 張三 123456 ksw9dkw9ksl92w3 備注&#xff1a;用戶…

科技前沿智能創新 2019北京智能家居 全屋智能博覽會

2019北京智能家居大型展覽會 2019北京全屋智能家居博覽會報道布展&#xff1a;2019年6月26日-27日 展會開幕&#xff1a;2019年6月28日上午9&#xff1a;00時展會交易&#xff1a;2019年6月28日-30日 展會撤展&#xff1a;2019年6月30日下午14&#xff1a;00時 展覽會在北京市政…

java 容器_我也來聊聊,JAVA容器與迭代器

java的容器與迭代器是一個老生常談的話題了。本文旨在與大家分享一些關于雙向鏈表與迭代器的運用小技巧&#xff0c;并希望本篇文章的內容能夠在項目中給你帶來幫助。Stack與LinkedListStack是一個LIFO(后進先出)的容器。若要在java中定義一個Stack應該怎么辦&#xff1f;也許你…

VS2005調試時變慢解決辦法

vs2005生成代碼以及調試運行時&#xff0c;如果設置斷點系統運行非常緩慢&#xff0c;從網上查閱一些資料后解決&#xff1a; 主要解決辦法是&#xff1a; 打開VS2005菜單項"工具"---->"導入導出設置"----->"重置所有設置" 本文參考:http:…