javascript基礎之一


上周收到湯姆大叔的贈書JavaScript編程精解(順風快遞哦,大叔果然給力),迫不及待瀏覽了下,首先看到是各種對該書原著的贊譽,非常期待接下來的閱讀體驗。讀完第一章,已經非常吸引我持續讀下去。因為書里的內容很對我的胃口——簡明扼要,把握細節。 這里我把自己覺得很細節,很重要的部分記錄下來,以方便今后的學習和查閱,當然也希望給正在學習javascript的朋友一些方便。

這里再次感謝大叔提供了這么好的javascript學習書籍,想學習javascript的同學,不要錯過這本書哦 o(∩_∩)o

一,javascript基礎

1.undefinednull:當使用var something;定義一個變量,alert(something)得到就是undefined。undefined和null主要是理論上的區別:null表示該值被定義,但是沒有任何實際值。undefined==null返回true。

2.自動類型轉換

下面幾個判斷都會返回true:false==0  ""==0  "5"==5  在多數情況下會將一個類型的值轉化為另一個類型進行判斷,但是當遇到null或者undefined的時候,只有兩邊都是null或undefined時才返回true。0NaN空字符串(""或者空白字符(串)"  ")轉化為false,其他所有的值都會轉化為true。

如果不想發送任何類型的自動轉化,可以使用另外的兩個操作符:===!==。分別表示精確相等和精確不等,此時,null===undefined,false===0,""===0,"5"===5都會返回false。

如果數字和字符串相乘,javascript會嘗試將字符串轉換為數字。如"Apollo"+5——>Apollo5,null+"ify"——>nullify,"5"*5=25,"zxf"*5=NaN.因為字符串不是數字,所以得到的結果也不是數字,NaN==NaN返回的是false,判斷是否是數字可以用isNaN函數。

3.&&||

||的作用:如果能將該值轉化為bool,並且值為true,就返回左邊的值,否則返回右邊的值

&&的作用:當左邊的值為false時,返回左邊的值,否則返回右邊的值。

另:只在必要時才執行表達式右邊的值,例如true||X,不管X什么,結果都是true,因此X從來就沒有被執行過。

4.函數

在C#等其他語言中,大括號是可以產生新的作用域的,但是在javascript中,函數是唯一可以創建新作用域的地方。如:

var a=0;
if(true)
{
    var a=1;
}
alert(a);

此時,內外a的值都是1.

4.1 函數值

javascript里面的所有東西都是值,包括function函數,可以像定義一個普通變量一樣定義函數。如:

var a=null;
function b(){alert("B");}
(a||b)();

(a||b)()這里將"調用時不傳參數"的操作符"()"應用到了(a||b)上,如果該表達式產生的不是函數,則會報錯。用匿名的函數也可以:(a||function(){alert("B");})();

4.2 閉包

如果創建局部變量的函數調用不在棧上了,那局部變量會發生什么變化,如下:

function createFunction(){
  var local=100;
  return function(){return local;};
}
var a=createFunction();
alert(a());//輸出100

調用createFunction()返回一個函數,這里賦給了a(體現了函數值的能力),a再加上"調用時不傳參數"的操作符"()"執行返回的函數function(){return local;},local的值被保存了下來,javascript的這種特性成為閉包——包裹一些局部變量的一個函數叫做一個閉包。再如:

function makeAdder(amount){
     return function(number){
         return number+amount; 
     };
}
var addTwo=makeAdder(2);
alert(addTwo(3));//輸出5 這里因為閉包保存了amount這個變量的值

ps:感謝大叔這么簡短有力的文字,讓我對閉包有了更多的了解,之前看過一些關於閉包描述,都不是很清楚。現在好多了o(∩_∩)o


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM