讀書筆記(javascript 高級程序設計)

一. 數據類型:

1. undefined: 未聲明和未初始化的變量,typeof 操作符返回的結果都是 undefined;(建議未初始化的變量進行顯式賦值,這樣當 typeof 返回 undefined 時就知道是未聲明了,幫助定位問題)

2. null:建議,將即將保存但還未真正保存對象的變量,賦值為 null;

3. number: 保存浮點數需要的內存空間是保存整數值的兩倍,因此 ECMAScript 會不失時機的將浮點數值轉換為整數值;

4. NaN: isNaN() 用于確定其參數是否“不是數值”;eg: isNaN("blue") —— true (因為不是數值);

附: typeof 可以判斷的類型:undefined/boolean/string/number/function;

5. parseInt(): 第二個參數可以指定進制,使參數按照指定進制轉換,如不指定進制,則按照十進制轉換;

 parseFloat() 只解析十進制值,他沒有第二個參數指定基數的用法;

6. 轉換為字符串: toString() 和 String();(null 和 undefined 沒有 toString() 方法)

String() 可將任何類型的值轉換為字符串; 轉換規則如下:

如果值有 toString() 方法,則調用該方法(沒有參數)并返回相應的結果 —— 如果值是 null,則返回 “null” —— 如果值是“undefined”, 則返回“undefined”;

7. 前 ++ 和后 ++:

前++和前--:eg:var age = 28; --age;//28(--age相當于 age = age - 1;age與(--age)整體的值也會變)

后++和后--:eg:

var num1 = 2;
var num2 = 20;
var num3 = num1-- + num2; //22 (age的值減1,(age--)整體的值不會變)
var num4 = num1 + num2; //21

8. 位運算符: 可以提高性能(詳見收藏);

9. == 和 !=: 比較 null 與 undefined 時,不能將它倆轉換為任何值;

10. switch語句:switch語句在比較值時使用的是全等操作符,因此不會發生類型轉換(如,“10” 不等于 10);

?二. 變量、作用域和內存問題:

1. 函數傳參:參數只能按值傳遞:當參數為基本數據類型時,直接進行復制操作;當參數為引用數據類型時,將引用地址進行復制給形參,如果在函數內部重新對引用類型的參數進行賦值,此時修改的引用變量參數為局部變量,這個局部的引用對象會在函數執行完畢后立即被銷毀;(傳參是復制,不能理解為是實參替換形參);函數參數也被當作變量來對待,因此其訪問規則與執行環境中的其他變量相同(局部變量,作用域鏈)。?

?2. 執行環境及作用域:

(1)延長作用域鏈:雖然執行環境的類型總共只有兩種——全局和局部(函數),但還是有其他辦法來延長作用域鏈。這么說是因為有些語句可以在作用域鏈的前端臨時增加一個變量對象,該變量對象會在代碼執行后被移除。在兩種情況下會發生這種現象。具體來說,就是當執行流進入下列任何一個語句時,作用域鏈就會得到加長:try-catch 語句的 catch 塊;with 語句。

這兩個語句都會在作用域鏈的前端添加一個變量對象。對 with 語句來說,會將指定的對象添加到作用域鏈中。對 catch 語句來說,會創建一個新的變量對象,其中包含的是被拋出的錯誤對象的聲明。

(2)垃圾回收機制:

  • 標記清除”是目前主流的垃圾收集算法,這種算法的思想是給當前不使用的值加上標記,然后再回收其內存。
  • 解除變量的引用不僅有助于消除循環引用現象,而且對垃圾收集也有好處。為了確保有效地回收內存,應該及時解除不再使用的全局對象、全局對象屬性以及循環引用變量的引用。

?

轉載于:https://www.cnblogs.com/momo798/p/7677220.html

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

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

相關文章

關于gcc擴展中的宏定義中用 # 和 ##

關于gcc擴展中的宏定義中用 "#" 和 "##"今天測試了宏定義中的 "#" 和 "##" 的區別。 結果如下: "#" 代表和一個字符串相連接 "##" 代表和一個符號連接,符號可以是變量,或另一…

java 年計算_java實現計算某年某月的天數

在計算某年某月的天數時,需要注意平年閏年。分析:閏年具體的判定方法就要看它的判定條件:四年一閏 , 百年不閏 ,400年再閏。而計算該年該月的天數,又分大月和小月,特殊月份2月之分。(視頻教程推…

添加自定義菜單,報錯40155

2019獨角獸企業重金招聘Python工程師標準>>> 提交的json中,某個自定義菜單對應的URL訪問是有問題的,請挨個檢查一下。 轉載于:https://my.oschina.net/selly1025/blog/1551496

gcc編譯流程及中間表示層RTL的探索

gcc編譯流程及中間表示層RTL的探索收藏新一篇: 解讀VC編程中的文件操作API和CFile類 | 舊一篇: Effective Item21 盡可能使用const 內容摘要 本文將以 C 語言為例,介紹 gcc 在接受一個 .c文件的輸入之后,其前端是如何進行處理并得到一個中間表示并轉交給…

【bzoj2132】圈地計劃 網絡流最小割

題目描述 最近房地產商GDOI(Group of Dumbbells Or Idiots)從NOI(Nuts Old Idiots)手中得到了一塊開發土地。據了解,這塊土地是一塊矩形的區域,可以縱橫劃分為NM塊小區域。GDOI要求將這些區域分為商業區和工業區來開發。根據不同的地形環境,每…

python爬蟲爬取數據如何將br去掉_Python怎么去除爬取下來的網站中的一些轉義字符串 - 收獲啦...

基本方法其實用python爬取網頁很簡單,只有簡單的幾句話這樣就可以獲得到頁面的內容。接下來再用正則匹配去匹配所需要的內容就行了。但是,真正要做起來,就會有各種各樣的細節問題。2.登錄這是一個需要登錄認證的網站。也不太難,只…

Linux基礎

Linux的特點: 系統版本:常見的有debian、Redhat更適合做服務器,更安全和穩定,Ubuntu唯一的優勢就是圖形界面好,centos目前被redhat收購,紅旗已經倒閉。 1、免費的/開源的;2、支持多線程/多用戶&…

GCC的編譯和調試--入門介紹

編譯與調試1.1編譯的概念和理解在進行C程序開發時,編譯就是將編寫的C語言代碼變成可執行程序的過程,這一過程是由編譯器來完成的。編譯器就是完成程序編譯工作的軟件,在進行程序編譯時完成了一系列復雜的過程。1.1.1程序編譯的過程在執行這一…

A* a=new B ,會不會產生內存泄露了,露了B-A的部分?

A* anew B ,delete a;會不會產生內存泄露了,露了B-A的部分。其中B為A的子類 析構函數在下邊3種情況時被調用:1.對象生命周期結束,被銷毀時;2.delete指向對象的指針時,或delete指向對象的基類類型指針,而其基…

spring 第一天:1015

對象加強的三種方法:1/繼承2/裝飾著模式3/動態調用 2:裝飾著模式:就是就是1-先建一個基類 ,如咖啡類 。味道很苦2- 再建一個類配料類 也就是說是所欲配料種類的父類。然后寫多配料子類個子類繼承配料類,。3-子類三個步…

java public 繼承_java繼承問題

代碼:父類:public class Father {public Father() {System.out.println("基類構造函數{");show();new a();System.out.println("}");}public void show() {System.out.println("基類----show");}public class a {public a…

BZOJ 1662: [Usaco2006 Nov]Round Numbers 圓環數(數位DP+惡心細節)

BZOJ 1662: [Usaco2006 Nov]Round Numbers 圓環數 Time Limit: 5 Sec Memory Limit: 64 MBDescription 正如你所知,奶牛們沒有手指以至于不能玩“石頭剪刀布”來任意地決定例如誰先擠奶的順序。她們甚至也不能通過仍硬幣的方式。 所以她們通過"round number&q…

Optimizing Code with GCC

現在的編譯器越來越聰明,功能越來越強,從簡單的函數內聯,到復雜的寄存器分析,一系列代碼革命使程序運行得越來越快。大多數時候,更快比更小重要,因為磁盤空間和內存都變得便宜了。但是在嵌入式系統里&#…

QTP的那些事--操作excel的函數

1: QTP Excel函數 操作EXCEL 數據表格 表單 編輯EXCEL 工作表 2: Dim ExcelApp As Excel.Application 3: Dim excelSheet As Excel.worksheet 4: Dim excelBook As Excel.workbook 5: Dim fso As scrīpting.FileSystemObject 6: 7: ******************…

java-生產者消費者模式

經常會有公司叫我們手撕代碼,比如網易,阿里,那我們是不是該掌握下呢。下面這段代碼來自《現代操作系統》進程與線程P49頁。 public class ProducerConsumer {public ProducerConsumer() { }private static final int N 100;static Producer …

yum查詢已經安裝mysql_通過yum安裝mysql

在linux中安裝數據庫首選MySQL,Mysql數據庫的第一個版本就是發行在Linux系統上,其他選擇還可以有postgreSQL,oracle等在Linux上安裝mysql數據庫,我們可以去其官網上下載mysql數據庫的rpm包,http://dev.mysql.com/downl…

koa2-cookie-session

node.js的path.extname方法使用   由于該方法屬于path模塊,使用前需要引入path模塊(var path require(“path”) )   接收參數:   p path 路徑 path.extname(index.html)// returns.htmlpath.extname(index.)// returns.pat…

從程序員角度看ELF

從程序員角度看ELF原文:《 ELF:From The Programmers Perspective》作者&#xff1a;Hongjiu Lu <mailto: hjlnynexst.com>NYNEX Science & Technology, Inc. 500 Westchester Avenue White Plains, NY 10604, USA 翻譯&#xff1a;alert7 <mailto: alert721cn.co…

JAVA命令符找不到符號_[轉]Java命令行編譯文件時出現的錯誤,找不到符號或軟件包不存在等...

標簽(空格分隔)&#xff1a; Javajavascript習慣了eclipse的自動編譯&#xff0c;Java命令行編譯、執行文件只會最基礎的部分&#xff0c;就是對單文件的編譯和執行&#xff0c;并且不包含任何外部JAR包。但有時候你還非得用命令行&#xff0c;會碰到一些問題&#xff0c;博主這…

C#中POST數據和接收的幾種方式

POST方式提交數據&#xff0c;一種眾所周知的方式&#xff1a; html頁面中使用form表單提交&#xff0c;接收方式&#xff0c;使用Request.Form[""]或Request.QueryString[""]來獲取。 這里介紹另外一種POST方式和接收方式&#xff0c;就是將整個數據作為加…