JavaScript散記

For/In循環(huán)

var person={fname:"john",lname:"Doe",age:25};
for(x in person){
  txt = txt +person[x];
}

對象的特性

訪問對象屬性:
方法一:preson.lastname;
方法二:person["lastName"];
訪問對象的方法:
//對象的寫法:鍵值對的形式書寫,即使是方法也是方法名:function(){....} 即方法名:方法體
var person = {
firstName:"john",
lastName:"Doe",
id:5566;
fullName:function(){
return this.firstName+" "+this.lastName;
}
}
訪問對象的方法:person.fullName();這樣會執(zhí)行方法體;
如果訪問方式為:person.fullName;那么此時意味著訪問fullName屬性,那么鍵所對應的值會全部返回出來.

方法的特性:

function 方法名(參數(shù)1,參數(shù)2){
方法體;
return ...
}
簡述:參數(shù)只有參數(shù)名,不需要聲明, 如有返回值則寫上return,如沒有就不寫return,其他地方無兩樣
如果方法中規(guī)定的傳入?yún)?shù)是三個,那么傳入兩個或者更少是可以的,但是方法是依次取傳入的值的,如果傳入的參數(shù)大于規(guī)定的值那也是可以的,完全沒有問題

類型特性:

typeof  "john"     //返回string
typeof  "32.1"     //返回number
typeof  false       //返回boolean
typeof  [1,2,3,4] //返回object
typeof  {name:'john',age:34}  //返回object
typeof NaN         //返回number
typeof new Date()  //返回Object
typeof function(){}   //返回function
typeof null           //返回object
typeof undefined  //返回undefined
type myCar          //返回undefined(如果沒有聲明,有聲明的話返回object)

在JavaScript中null表示什么都沒有,null是一個只有一個值的特殊類型,表示一個空對象的引用,例如:
var person = null; typeof person; 此時person的類型為對象
var person = undefined;typeof person 此時類型為undefined
在JavaScript中,undefined是一個沒有設置值的變量.
undefined和null的區(qū)別

  1. null的類型是對象,undefined的類型是undefined
  2. null === undefined 為false null == undefined 為ture

JavaScript數(shù)據(jù)類型

在JavaScript中有5種不同的數(shù)據(jù)類型:
string number boolean object function
三種對象類型Object Date Array
兩個不包含任何值的數(shù)據(jù)類型:
null undefined

constructor屬性

"john".constructor //返回函數(shù) String() { [native code] }
(3.14).constructor //返回函數(shù) Number(){ [native code] }
...
可以使用constructor屬性來查看對象是否為數(shù)組(包含字符串"Array");
function isArray(MyArray){
return myArray.constructor.toString().indexof("Array")>-1;
}

try catch throw

try 語句測試代碼塊的錯誤
catch 語句處理錯誤
throw 語句創(chuàng)建自定義錯誤

function myFuncton(){
  try{
         var x = document.getElementById("demo").value;
          if(x=="") throw "值為空";
          if(isNaN(x)) throw "不是數(shù)字";
          if(x>10) throw "太大";
          if(x<5) throw "太小";
  }catch(err){
          var y = document.getElementById("mess");
          y.innerHTML="錯誤:"+err+".";
  }
}

JavaScript變量提升

JavaScript中,函數(shù)及變量的聲明都將被提升到函數(shù)的最頂部.
JavaScript中,變量可以在使用后聲明,也就是變量可以先使用在聲明
例如:

x = 5;//變量x 設置為5;
elem = document.getElementById("demo");//查找元素
elem.innerHTML = x; //在元素中顯示x
var  x; //聲明x

但是JavaScript的初始化不會提升
例如:

elem = document.getElementById("demo")//查找元素;
elem.innerHTML = x;
var x = 10; ///這時候聲明與初始化放在后面了,那么此時elem.innerHTML的值為undefined

注:盡量在頭部聲明你的變量

switch注意事項:

直接上案例:

var x = 10;
switch(x){
    //這樣是不對的,switch語句會使用恒等計算符(===)進行比較,所以是沒有效果的
    case "10":alert("hello");//類型不對   
}

浮點型數(shù)據(jù)使用注意事項

#  JavaScript中的所有數(shù)據(jù)都是以64位浮點型數(shù)據(jù)(float)來存儲.
# 所有的編程語言,包括JavaScript,對浮點型數(shù)據(jù)的精確度都很難確定
var x = 0.1;
var y = 0.2;
var z = x+y;    //z不等于0.3
if(z==0.3)      //所以這里邏輯表達式返回的是false
可以用整數(shù)的乘除法來解決:
var z = (x*10+y*10)/10;   //z的結(jié)果為0.3

JavaScript字符串分行

可以向下面這種方式使用斷行語句:
var x = 
"hello world!";
但是,在字符串中直接使用回車換行是會報錯的:
var x = "hello
world!";
字符串斷行需要使用反斜杠(\)
var x = "hello \
world!";
函數(shù)中,return 和所return的內(nèi)容必須同行,否則會返回undefined;

javascript:void(0)含義

javascript:void(0)中最關鍵的是void關鍵字,void是javascript中非常重要的關鍵字,該操作符指定要計算一個表達式但是不返回值

語法格式:
void func()
javaxcript:void func();
或者
void(func())
javascript:void(func())
以下例子什么都不返回
<a href="javascript:void(0)" >單擊此處什么也不會發(fā)生</a>
以下示例,在用戶點擊鏈接后會顯示警告信息
<a href="javascript:void(alert('warning!!!'))"
以下示例a=undefined;
a = void(b=5,c=7);
href="#"與href="javascript:void(0)"的區(qū)別
#包含了一個位置信息,默認的錨是top也就是網(wǎng)頁的上端.
而javascript:void(0),僅僅表示一個死鏈接
如果需要用到死鏈接,那么建議使用javascript:void(0);

函數(shù)

分號是用來分隔可執(zhí)行javascript語句
由于函數(shù)聲明不是一個可執(zhí)行語句,所以不以分號結(jié)束.
函數(shù)表達式:
var x = function(a,b){return a*b};
var z = x(4,3);
此時該匿名函數(shù)賦值給x是一條可執(zhí)行語句,所以需要分號,
該函數(shù)實際是一個匿名函數(shù)
構(gòu)造函數(shù)Function()
var myFunction = new Function("a","b","return a*b");
var x = myFunction(4,4);
實際上可以不用構(gòu)造函數(shù),直接:
var myFunction = function(a,b){return a*b}
var x = myFunction(4,4);
在javascript中,很多時候,我們需要避免使用new關鍵字.
函數(shù)提升,
在javascript中,變量的聲明以及函數(shù)的聲明默認都會提升,無論在使用前寫函數(shù)的聲明,
還是使用后寫函數(shù)的聲明都會被提前.不會出現(xiàn)undefined
自調(diào)用函數(shù)
函數(shù)表達式可以自調(diào)用
自調(diào)用表達式會自調(diào)用
如果表達式后面緊跟().則會自動調(diào)用
實例:
(function(){
  var x = "hello!!!";  //我將調(diào)用自己
})();
函數(shù)可作為一個值使用
實例:
function myFunction(a,b){
  return a*b;
}
var x = myFunction(4,3)*2;
函數(shù)是對象
在javascript中使用typeof操作符判斷函數(shù)的類型時返回的是function.
但是javascript函數(shù)描述為一個對象更加準確,
javascript中函數(shù)有屬性和方法
實例:
 function myFunction(a,b){
  return arguments.length;   //該屬性返回函數(shù)調(diào)用過程接收到的參數(shù)的個數(shù)
}
var txt = myFunction.toString();  //該方法會返回函數(shù)的聲明;

javascript函數(shù)參數(shù)

顯示參數(shù):在函數(shù)定義時列出
隱示參數(shù):在函數(shù)調(diào)用時傳遞給函數(shù)真正的值
參數(shù)規(guī)則:

  1. 函數(shù)定義時顯示參數(shù)沒有數(shù)據(jù)類型
  2. 函數(shù)對隱示參數(shù)沒有進行類型檢查
  3. 函數(shù)對隱示參數(shù)沒有進行個數(shù)檢查

默認參數(shù):
如果函數(shù)在調(diào)用時未提供隱示參數(shù),參數(shù)會默認設置為undefined,有時這是可以接受的,但是建議最好為參數(shù)設置一個默認值,實例:

function myFunction(x,y){
  if(y==undefined){
    y=0;
  }
}
還有一種更簡單的設置默認參數(shù)的方式
function myFunction(x,y){
  y = y||0;  //如果y已經(jīng)定義,則返回y,因為y是true,否則返回0,因為undefined為false.
}

Arguments對象
JavaScript函數(shù)有個內(nèi)置arguments對象.
argument對象包含了函數(shù)調(diào)用的參數(shù)數(shù)組
通過這種方式你可以很方便遭到最好一個參數(shù)的值

x = findMax(1,12,234,555,325);
function findMax(){
  var i,max = 0;
  for(i=0;i<arguments.length;i++){
    if(arguments[i]>max){
          max = arguments[i];
    }
  }
  return max;
}

值傳遞:
在函數(shù)中調(diào)用的采納紅素是函數(shù)的隱式參數(shù).javascript隱式參數(shù)通過值來傳遞,函數(shù)僅僅只是獲取值,如果函數(shù)修改從參數(shù)的值,不會修改顯示參數(shù)的初始值(在函數(shù)外定義).隱式參數(shù)的改變在函數(shù)外是不可見的.
對象傳遞參數(shù):
在javascript中,可以引用對象的值,因此我們在函數(shù)內(nèi)部修改對象的屬性就會修改其初始值.修改對象屬性可作用于函數(shù)外部(全局變量),修改對象的屬性在函數(shù)外是可見的.

函數(shù)調(diào)用

使用構(gòu)造函數(shù)調(diào)用
function myFunction(arg1,arg2){
this.fullName=arg1;
this.lastName=arg2;
}
var x = new myFunction("john","Doe");
x.firstName;
作為函數(shù)方法調(diào)用函數(shù):
在javascript中,函數(shù)是對象,javascript函數(shù)有他的屬性和方法.
call()和apply()是預定義的函數(shù)方法,兩個方法可用于調(diào)用函數(shù),兩個方法的第一個參數(shù)必須是對象本身.
示例:

function myFunction(a,b){
  return a*b;
}
//第一種方法調(diào)用
myFunction.call(myObject,10,2);
//第二種方法調(diào)用
myArray = [10,2];
myFunction.apply(myObject,myArray);
兩個方法都是用了對象本身作為第一個參數(shù),兩者的區(qū)別在于第二個參數(shù)
apply傳入的一個參數(shù)數(shù)組,而call傳入的是一個個參數(shù)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末溪食,一起剝皮案震驚了整個濱河市兰伤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盒揉,老刑警劉巖田藐,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荔烧,死亡現(xiàn)場離奇詭異,居然都是意外死亡汽久,警方通過查閱死者的電腦和手機鹤竭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來景醇,“玉大人臀稚,你說我怎么就攤上這事》戎保” “怎么了烁涌?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵苍碟,是天一觀的道長。 經(jīng)常有香客問我撮执,道長微峰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任抒钱,我火速辦了婚禮蜓肆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谋币。我一直安慰自己仗扬,他們只是感情好,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布蕾额。 她就那樣靜靜地躺著早芭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪诅蝶。 梳的紋絲不亂的頭發(fā)上退个,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機與錄音调炬,去河邊找鬼语盈。 笑死,一個胖子當著我的面吹牛缰泡,可吹牛的內(nèi)容都是我干的刀荒。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼棘钞,長吁一口氣:“原來是場噩夢啊……” “哼缠借!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起宜猜,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤烈炭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后宝恶,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡趴捅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年垫毙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拱绑。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡综芥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出猎拨,到底是詐尸還是另有隱情膀藐,我是刑警寧澤屠阻,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站额各,受9級特大地震影響国觉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜虾啦,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一麻诀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧傲醉,春花似錦蝇闭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至吐咳,卻和暖如春逻悠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挪丢。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工蹂风, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人乾蓬。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓惠啄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親任内。 傳聞我的和親對象是個殘疾皇子撵渡,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容