Javascript 知識點精簡

來源:互聯網
上載者:User
文章目錄
  • 如何在HTML中引入JS?
  • 浮點數不要用 == 來進行判斷
  •     boolean 類型
  • 函數
  • 我們在Javascript中聲明的函數被載入到哪了?
  • global對象的 eval()方法
  • 自訂對象
  • 遍曆對象的所有元素(屬性,方法)
  • with 結構的用法
如何在HTML中引入JS?

    所有重新導向的HTML標籤內都可以嵌入javascript代碼,例如:
        <a href="javascript:alert('OK')"></a>
        <form action="javascript:alert('OK')"></form>
        <script>alert("Hello")</script>
        <script src="test.js"></script> 可以匯入多個js

 

浮點數不要用 == 來進行判斷

    var num=0;
    for(var i=0;i<10;i++){
        num += 0.1;
    }
    alert(num); // num:0.9999999999999

 

    boolean 類型

        不同於.NET只判斷true或false,JS裡 0, 0.00, "", null 返回的都是 false

函數

普通聲明:

function test(){};
function test(arg1,arg2..argN){}

匿名函數:

var test = function(){
               }

回呼函數:(僅靠傳遞變數搞不定的,可以傳遞函數)

function test(a,b,funA){
    return funA(a,b); //  方法執行由使用者傳入的函數決定 最典型的樣本是 數組的sort()方法可以接收指定的定序
}

函數調用方式:

function test(){
    alert("Hello");
}
test();

var fun1 == test;
fun1();  //  函數也能賦值給變數,因此函數也是資料類型的一種
alert(fun1); // result:輸出整個函數的聲明(這裡指的聲明包括 函數名 和 程式碼片段)

函數參數:

function numAdd(num1,num2){
    return num1 + num2;
}
numAdd(3,5) // 常規調用
numAdd(2,4,6,8,10) // 非常規調用呢?其實fun也可以改寫成下面這樣:
function numAdd(){
    var result = 0;
    for(var i=0;i<arguments.length;i++){
        result += arguments[i];
    }
    return result;
}
alert(numAdd(2,4,6,8,10)); // result:30

參數的預設值

function test(a,b){
    if(typeof(a) == "undefined")
        a=1;
    if(typeof(b) == "undefined")
        b=2;
}
function test(a,b){
    if(!a)
        a=1;
    if(!b)
        b=2;
}
function test(a,b){ // 最簡潔的方式   

    a = a? a:1;
    b = b? b:2;
}

 

我們在Javascript中聲明的函數被載入到哪了?

答案是:window 對象。JS中,函數也是基於對象調用的,由於 window 對象可以省略,因此我們可以直接調用自己寫過的函數!

 

global對象的 eval()方法

global 對象的 eval()方法相當於JS程式中的代碼解析器 可以執行合法的字串,樣本:

var str = "var a="+ f +";a+=a"
var f = 5;
eval(str);
alert(a); // 10

註:如果不執行 eval 方法是擷取不到變數a的

 

自訂對象

由於沒有Class的類的概念,而對象又是要new出來的 因此要通過函數才能建立出對象。

方式一:這個方法是最初設計的原型和構思

function person(){

}
var p = new person();
p.name = "XJ"; // property
p.age = 30;
p.play = function(){ // method
    document.write("Playing......");
}

方式二

var person = new Object();
person.name = "XJ"; // property
person.age = 30;
person.play = function(){ // method
    document.write("Playing......");
}

方式三

function person(){
    var p = new Object();
    p.name = "XJ"; // property
    p.age = 30;
    p.play = function(){ // method
        document.write("Playing......");
    }
    return p;
}
擷取對象: var p = person();

方式四:

function person(name,age,play){
    this.name=name;
    this.age=age;
    this.play=play;//method
}
var p = new person("xj","30",function{
    document.write("Playing......");
});
alert(p.name);
p.play();

 

遍曆對象的所有元素(屬性,方法)

for(var tmpName in p){     

    alert(p[tmpName]);
}

注意:這裡獲得的都是元素名,而不是元素的值,for..in對於數組而言擷取的是索引。這是有別於C#中foreach的。

 

with 結構的用法

with(document){
    write("Hello");
}

with 語句塊可以讓使用對象的屬性和方法變的文法更為簡單,適用於多次操作一個對象的成員時。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.