javaScript基礎語法(上)

 

 

相關理論概念:java

直接量的概念:直接描述某個(些)存儲空間的值的量,如變量的值、對象的值、數組的值。jquery

數據類型:在數據結構中的定義是一個值的集合以及定義在這個值集上的一組操做。編程

 

一、變量的聲明和使用數組

  變量:是計算機語言中能儲存計算結果或能表示值抽象概念。變量能夠經過變量名訪問。數據結構

  語法規則:dom

    var 變量名;函數

  而後進行賦值:num=10時直接賦值:編碼

  var num=10;spa

  良好的變量命名方式:3d

  1. 變量必須以字母開頭;
  2. 變量名稱對大小寫敏感(y 和 Y 是不一樣的變量);
  3. 變量名應當老是遵照駝峯大小寫命名法,而且命名前綴應當是名詞。

  代碼示例:

    //好的寫法:

    var count = 10;

    var myName = "Nicholas";

    var found = true;

    //很差的寫法:

    var getCount = 10;

    var isFound = true;

二、數據類型

數據類型 含義
undefined 未定義
null
string 字符串類型
boolean 布爾類型
number 數值類型

 

 

 

 

 

 

 

 

 

注意:

  1. 竟然undefined和null的含義不一樣,但undefined其實是由null派生來的,ECMAScript把它們定義爲相等的。
  2. number類型既能夠表示32位整數,還能夠表示64位浮點數。
  3.  is not defined與undefined的區別:is not defined是未聲明定義,找不到。undefined是已定義在目錄文件中未找到。

 1、基礎數據類型:

  一、undefined:

    undefined是一個特殊值,那些沒被變量初始化的變量都有一個初始值,即undefined,表示這個變量等待被賦值。

    代碼示例:

    //很差的寫法

    var person;

    console.log(person===undefined); //true

    //foo未被聲明

    var person;

    console.log(typeof person); //"undefined"

    console.log(typeof foo);//"undefined"

    //好的寫法,建議使用null

    var person =null;

    console.log(person=== null);

  二、null

  null是一個特殊值,但咱們經常誤解它,將它和undefined搞混。在如下場景中應當使用null.

  • 用來初始化一個變量,這個變量可能賦值爲一個對象。
  • 用來和一個已經初始化的變量比較,這個變量能夠是也能夠不是一個對象。
  • 當函數的參數指望是對象時,用做參數傳入。
  • 當函數的返回值指望是對象時,用做返回值傳出

  還有如下兩個場景不該當使用null.

  • 不要使用null來檢測是否傳入了某個參數。
  • 不要使用null來檢測一個未初始化的變量

  代碼示例:

  //好的用法

  var person = null;

  //好的用法

  function  getperson () {

    if (condition){

      return new person ("Nicholas");

    } else {

      return null;

    }

  }

  //好的用法

  var person = getPerson ();

  if(person != null ){

    dosomething();

  }

  //很差的寫法:用來和未初始化的變量比較

  var person;

  if (person !=null){

    dosomething();

  }

  //很差的寫法:檢測是否傳入了參數

  function dosomething (arg1,arg2,arg3,arg4) {

    if ( arg4 != null){

      dosomethingElse();

    }

  }

 注意:最好把null理解爲佔位符(placeholder)。

  檢測屬性避免非空比較:

  另一種用到null(以及undefined)的場景是當檢測一個屬性是否在對象中存在時,好比:

  //很差的寫法:檢測假值

  if ( object[propertyName]) {

    //一些代碼

  }

  //很差的寫法:和null相比較

  if( object[propertyName] != null){

    //一些代碼

  }  

  //很差的寫法:和undefined比較

  if (object[propertyName]){

    //一些代碼

  }

  注意:建議使用in運算符進行判斷屬性。

  若是實例對象的屬性存在、或者繼承自對象的原型,in運算符都會返回true.好比:

  var object = {

    count:0;

    related: null;

  };

  //好的寫法

  if( "count" in object){

    //這裏的代碼會執行

  }

  //很差的寫法:檢測假值

  if ( object["count"]){

    //這裏的代碼不會執行

  }

  //好的寫法

  if ( "related" in object) {

    //這裏的代碼會執行

  }

  //很差的寫法:檢測是否爲 null

  if ( object["related"] !=null ){

    //這裏的代碼不會執行

  }

  //對於全部非dom對象來講,這是好寫法

  if (object.hasOwnProperty("related")){

    //執行這裏的代碼

   }

  //若是你不肯定是否爲dom對象,則這樣寫

  if ("hasOwnProperty" in object &&  object.hasOwnProperty("related")){

    //執行這裏的代碼

  }

  hasOwnProperty方法的使用:

  • 若是你檢查實例對象的某個屬性是否存在, 可使用它。由於全部繼承obj的javaScript對象都有這個方法。
  • 若是實例中存在這個屬性的返回true。注意:若是這個屬性存在於原型裏,則返回false。

  注意:

  •  在IE8以及更早版本的IE中,DOM對象並不是繼承自object,所以也不包含hasOwnProperty方法,也就是說,你在調用dom對象的hasOwnProperty方法以前應當先檢測其是否存在(假如你已經知道對象不是dom,則能夠省略這一步)。 
  • 無論你何時須要檢測屬性的存在性,請使用in運算符或者hasOwnProperty方法這樣能夠避免不少bug。 

 

  三、string  字符串類型

  在javaScript中全部字符是16位的,使用的是Unicode字符編碼集。可使用單引號或雙引號來表示,它可能包含0個或多個字符。

  在javaScript中沒有字符類型的概念,若須要轉義字符則使用/(斜槓)+符號或相關的字母來表示。

  javaScript中字符串的編碼風格:

    • 建議使用雙引號來表示一個字符串。Crockford的編程規範和jquery的核心風格指南都是使用雙引號來表示。利於開發效率,上下文編碼規範統一,由於如java等語言的字符串是使用雙引號來表示的。
    • 谷歌則是使用單引號來表示。

  相關示例:

  //很差寫法

  var longString ="Here's the story , of a man \ named Brady.";

  //好的寫法

  var  longString ="Here's the story , of a man " + " named Brady.";

  四、boolean 布爾類型

  布爾(邏輯)只能有兩個值:true 或 false。

  相關示例:

  var x=true;

  var y=false;

 

  五、number類型

  javaScript只有一個數字類型,它在內部被表示爲64位的浮點數,相似於java的double浮點類型。

  在javaScript中1和1.0的值相同,在java等語言中是不等價的,是兩種數字類型。

  相關示例:

  //整數

  var count =10;

  //小數

  var price = 10.0;

  var price =10.00;

  //不推薦的小數寫法:沒有小數部分

  var price = 10.;

  //不推薦的小數寫法:沒有整數部分

  var price = .1;

  //不推薦的寫法:八進制寫法已被棄用了

  var num = 010;

  //十六進制寫法

  var num = 0xA2;

  //科學計數法

  var num = 1e23;

2、引用類型

 一、數組

 

  數組:在數據結構中編號的值是有序集合。

  下面的代碼建立名爲 cars 的數組:

  var cars=new Array();
  cars[0]="Saab";
  cars[1]="Volvo";
  cars[2]="BMW";

  或者 (condensed array):

  var cars=new Array("Saab","Volvo","BMW");

  或者 (literal array):

  var cars=["Saab","Volvo","BMW"];
  數組下標是基於零的,因此第一個項目是 [0],第二個是 [1],以此類推。
  相關示例:
  //很差的寫法:不同意使用array構造函數顯式地建立數組.
  var colors = new Array("red","green","blue");
  var number = new Array (1,2,3,4);
  //好的寫法:使用數組初始元素來代替array構造函數來建立數組。
  var colors = ["red","green","blue"];
  var numbers = [1,2,3,4];

 

 二、對象

  對象:將一組數據與這組數據有關操做組裝在一塊兒,造成一個實體,在數據結構中編號的值是無序集合,這個實體就是對象。包含行爲和相關屬性。

  對象由花括號分隔。在括號內部,對象的屬性以名稱和值對的形式 (name : value) 來定義。屬性由逗號分隔:

  var person={firstname:"John", lastname:"Doe", id:5566};

  上面例子中的對象 (person) 有三個屬性:firstname、lastname 以及 id。

  空格和折行可有可無。聲明可橫跨多行:

  var person={
    firstname : "John",
    lastname  : "Doe",
    id        :  5566
  };

  對象屬性有兩種尋址方式:

  name=person.lastname;
  name=person["lastname"];
  相關示例:
  //很差的寫法
  var book = new Object();
  book.title = "Maintainable JavaScript";
  book.author = "Nicholas C. Zakas";
  //好的寫法
  var book = {
    title: "Maintainable JavaScript";
    author: "Nicholas C. Zakas";
  }

 

 三、函數

  函數的做用是封裝相關數據或組件用的。

  函數就是包裹在花括號中的代碼塊,前面使用了關鍵詞 function:

  function  functionname()
  {
    //執行代碼
  }

 

  當調用該函數時,會執行函數內的代碼。

  能夠在某事件發生時直接調用函數(好比當用戶點擊按鈕時),而且可由 JavaScript 在任何位置進行調用。

三、運算符

  運算符用於執行程序代碼運算,會針對一個以上操做數項目來進行運算。

  

 

 

 

相關文章
相關標籤/搜索