python學習點滴記錄-Day14-前端基礎之javascript

js:
前端語言
網頁是由html css js組成的javascript

ECMAScript基本語法
DOM :document object model
BOM :browser object model css

變量html

數據類型前端

運算符java

流程控制python

函數面試

面向對象數組


 

js引入方式

1/經過script方式 直接在head裏寫script
<!-- <script>alert(123)</script> -->
2/外部引用
<!-- <script src="index.js"></script> -->dom

js的變量、常量以及標識符

x=5ide

y=6

z=x+y

在代數中,咱們使用字母(好比 x)來保存值(好比 5)。經過上面的表達式 z=x+y,咱們可以計算出 z 的值爲 11。在 JavaScript 中,這些字母被稱爲變量。

那麼如何在JS中定義使用變量呢?

一、聲明變量時不用聲明變量類型. 全都使用var關鍵字;

// 定義變量

var a;

a=3;

alert(a);

二、一行能夠聲明多個變量.而且能夠是不一樣類型

var name="tianle", age=18, job="it";

三、聲明變量時 能夠不用var. 若是不用var 那麼它是全局變量

四、變量命名,首字符只能是字母,下劃線,$美圓符 三選一,餘下的字符能夠是下劃線、美圓符號或任何字母或數字字符且區分大小寫,x與X是兩個變量

Camel 標記法
首字母是小寫的,接下來的字母都以大寫字符開頭。例如:
var myTestValue = 0, mySecondValue = "hi";
Pascal 標記法
首字母是大寫的,接下來的字母都以大寫字符開頭。例如:
Var MyTestValue = 0, MySecondValue = "hi";
匈牙利類型標記法
在以 Pascal 標記法命名的變量前附加一個小寫字母(或小寫字母序列),說明該變量的類型。例如,i 表示整數,s 表示字符串,以下所示「
Var iMyTestValue = 0, sMySecondValue = "hi";
命名規範參考

 

常量和標識符

常量 :直接在程序中出現的數據值

標識符:

  1. 由不以數字開頭的字母、數字、下劃線(_)、美圓符號($)組成
  2. 經常使用於表示函數、變量等的名稱
  3. 例如:_abc,$abc,abc,abc123是標識符,而1abc不是
  4. JavaScript語言中表明特定含義的詞稱爲保留字,不容許程序再定義爲標識符

 

// js以分號;做爲分隔符對比python的縮進

// 註釋: 單行註釋//,多行/* 內容 */

 


 

JS的數據類型

number ----- 數值
boolean ----- 布爾值
string ----- 字符串
undefined ----- undefined
null ----- null

數字類型(number)

 

  • 不區分整型數值和浮點型數值;
  • 全部數字都採用64位浮點格式存儲,至關於Java和C語言中的double格式
  • 能表示的最大值是±1.7976931348623157 x 10308
  • 能表示的最小值是±5 x 10 -324  

整數:
           在JavaScript中10進制的整數由數字的序列組成
           精確表達的範圍是
-9007199254740992 (-253) 到 9007199254740992 (253)
           超出範圍的整數,精確度將受影響
浮點數:
           使用小數點記錄數據
           例如:3.4,5.6
           使用指數記錄數據
           例如:4.3e23 = 4.3 x 1023

16進制和8進制數的表達:
           16進制數據前面加上0x,八進制前面加0;16進制數是由0-9,A-F等16個字符組成;8進制數由0-7等8個數字組成

           16進制和8進制與2進制的換算:

    2進制: 1111 0011 1101 0100   <-----> 16進制:0xF3D4 <-----> 10進制:62420

    2進制: 1 111 001 111 010 100 <-----> 8進制:0171724

字符串類型(string)

是由Unicode字符、數字、標點符號組成的序列;字符串常量首尾由單引號或雙引號括起;JavaScript中沒有字符類型;經常使用特殊字符在字符串中的表達;
字符串中部分特殊字符必須加上右劃線\;經常使用的轉義字符 \n:換行 \':單引號 \":雙引號 \\:右劃線

布爾類型(boolean)

Boolean類型僅有兩個值:true和false,也表明1和0,實際運算中true=1,false=0
布爾值也能夠看做on/off、yes/no、1/0對應true/false
Boolean值主要用於JavaScript的控制語句

Null & Undefined類型

var c;console.log(c);console.log(typeof c);當函數沒有返回值時,類比python的undefined

Undefined類型

Undefined 類型只有一個值,即 undefined。當聲明的變量未初始化時,該變量的默認值是 undefined。

當函數無明確返回值時,返回的也是值 "undefined";

Null類型

另外一種只有一個值的類型是 Null,它只有一個專用值 null,即它的字面量。值 undefined 其實是從值 null 派生來的,所以 ECMAScript 把它們定義爲相等的。

儘管這兩個值相等,但它們的含義不一樣。undefined 是聲明瞭變量但未對其初始化時賦予該變量的值,null 則用於表示還沒有存在的對象(在討論 typeof 運算符時,簡單地介紹過這一點)。若是函數或方法要返回的是對象,那麼找不到該對象時,返回的一般是 null。

運算符

算術運算符:
    +   -    *    /     %       ++        -- 

比較運算符:
    >   >=   <    <=    !=    ==    ===   !==

邏輯運算符:
     &&   ||   !

賦值運算符:
    =  +=   -=  *=   /=

字符串運算符:
    +  鏈接,兩邊操做數有一個或兩個是字符串就作鏈接運算

// js是弱類型語言 會自動作類型轉換
console.log("1"==1) //true 弱類型表現
console.log("1"===1) //false 

靜態類型語言
一種在編譯期間就肯定數據類型的語言。大多數靜態類型語言是經過要求在使用任一變量以前聲明其數據類型來保證這一點的。Java 和 C 是靜態類型語言。 
動態類型語言
一種在運行期間纔去肯定數據類型的語言,與靜態類型相反。VBScript 和 Python 是動態類型的,由於它們肯定一個變量的類型是在您第一次給它賦值的時候。 
強類型語言
一種老是強制類型定義的語言。Java 和 Python 是強制類型定義的。您有一個整數,若是不明確地進行轉換 ,不能將把它當成一個字符串去應用。 
弱類型語言
一種類型能夠被忽略的語言,與強類型相反。JS 是弱類型的。在JS中,能夠將字符串 '12' 和整數 3 進行鏈接獲得字符串'123',而後能夠把它當作整數 123 ,全部這些都不須要任何的顯示轉換。 
因此說 Python 既是動態類型語言 (由於它不使用顯示數據類型聲明),又是強類型語言 (由於只要一個變量得到了一個數據類型,它實際上就一直是這個類型了)。
js不一樣於python,是一門弱類型語言

 

算術運算符

注意1: 自加自減

假如x=2,那麼x++表達式執行後的值爲3,x--表達式執行後的值爲1;i++至關於i=i+1,i--至關於i=i-1;
遞增和遞減運算符能夠放在變量前也能夠放在變量後:--i

var i=10;
console.log(i++);//10
console.log(i);//11
console.log(++i);//12
console.log(i);//12
console.log(i--);//12
console.log(--i);//10

 

注意2: 單元運算符

- 除了能夠表示減號還能夠表示負號  例如:x=-y

+ 除了能夠表示加法運算還能夠用於字符串的鏈接  例如:"abc"+"def"="abcdef" 

注意3: NaN

var d="yuan";
    d=+d;
    alert(d);//NaN:屬於Number類型的一個特殊值,當遇到將字符串轉成數字無效時,就會獲得一個NaN數據
    alert(typeof(d));//Number

    //NaN特色:
    
    var n=NaN;
    
    alert(n>3);
    alert(n<3);
    alert(n==3);
    alert(n==NaN);
    
    alert(n!=NaN);//NaN參與的全部的運算都是false,除了!=

 

比較運算符

>   >=   <    <=    !=    ==    ===   !==

用於控制語句時:

         if (2>1){ 
            console.log("條件成立!")
        }

等號和非等號的同類運算符是全等號和非全等號。這兩個運算符所作的與等號和非等號相同,只是它們在檢查相等性前,不執行類型轉換。

console.log(2==2);
console.log(2=="2");
console.log(2==="2");
console.log(2!=="2");
var bResult = "Blue" < "alpha";
alert(bResult); //輸出 true  
在上面的例子中,字符串 "Blue" 小於 "alpha",由於字母 B 的字符代碼是 66,字母 a 的字符代碼是 97。

比較數字和字符串

另外一種棘手的情況發生在比較兩個字符串形式的數字時,好比:

var bResult = "25" < "3";
alert(bResult); //輸出 "true"
上面這段代碼比較的是字符串 "25""3"。兩個運算數都是字符串,因此比較的是它們的字符代碼("2" 的字符代碼是 50,"3" 的字符代碼是 51)。

不過,若是把某個運算數該爲數字,那麼結果就有趣了:

var bResult = "25" < 3;
alert(bResult); //輸出 "false"

這裏,字符串 "25" 將被轉換成數字 25,而後與數字 3 進行比較,結果不出所料。

總結:

比較運算符兩側若是一個是數字類型,一個是其餘類型,會將其類型轉換成數字類型.
比較運算符兩側若是都是字符串類型,比較的是最高位的asc碼,若是最高位相等,繼續取第二位比較.
注意1

 

等性運算符:執行類型轉換的規則以下:

若是一個運算數是 Boolean 值,在檢查相等性以前,把它轉換成數字值。false 轉換成 0,true 爲 1。 
若是一個運算數是字符串,另外一個是數字,在檢查相等性以前,要嘗試把字符串轉換成數字。 
若是一個運算數是對象,另外一個是字符串,在檢查相等性以前,要嘗試把對象轉換成字符串。 
若是一個運算數是對象,另外一個是數字,在檢查相等性以前,要嘗試把對象轉換成數字。 
在比較時,該運算符還遵照下列規則:

值 null 和 undefined 相等。 
在檢查相等性時,不能把 null 和 undefined 轉換成其餘值。 
若是某個運算數是 NaN,等號將返回 false,非等號將返回 true。 
若是兩個運算數都是對象,那麼比較的是它們的引用值。若是兩個運算數指向同一對象,那麼等號返回 true,不然兩個運算數不等。
注意2

邏輯運算符

對應python的and or not 

if (2>1 && [1,2]){
    console.log("條件與")
}

// 思考返回內容?
console.log(1 && 3);
console.log(0 && 3);
console.log(0 || 3);
console.log(2 || 3);

 

流程控制

  • 順序結構(從上向下順序執行)
  • 分支結構
  • 循環結構

順序結構

    <script>
        console.log(「星期一」);
        console.log(「星期二」);
        console.log(「星期三」);
    </script>

分支結構

if-else結構:

if (表達式){
語句1;
......
} else{
語句2;
.....
}

功能說明:若是表達式的值爲true則執行語句1,不然執行語句2

示例:

var x= (new Date()).getDay();
        //獲取今天的星期值,0爲星期天
        var y;

        if ( (x==6) || (x==0) ) {
            y="週末";
        }else{
            y="工做日";
            }
        
        console.log(y);

        /*等價於

        y="工做日";
        if ( (x==6) || (x==0) ) {
        y="週末";
        }
        console.log(y);  */
View Code

if-elif-else結構:

if (表達式1) {
語句1;
}else if (表達式2){
語句2;
}else if (表達式3){
語句3;
} else{
語句4;
}

示例:

var score=window.prompt("您的分數:");

if (score>90){
    ret="優秀";
}else if (score>80){
    ret="";
}else if (score>60){
    ret="及格";
}else {
    ret = "不及格";

}
alert(ret);
View Code

switch-case結構

switch基本格式
switch (表達式) {
case 值1:語句1;break;
case 值2:語句2;break;
case 值3:語句3;break;
default:語句4;
}

 

 示例:

switch(x){
case 1:y="星期一";    break;
case 2:y="星期二";    break;
case 3:y="星期三";    break;
case 4:y="星期四";    break;
case 5:y="星期五";    break;
case 6:y="星期六";    break;
case 7:y="星期日";    break;
default: y="未定義";
}
View Code

 

switch比else if結構更加簡潔清晰,使程序可讀性更強,效率更高。

循環結構

循環語句流程圖     

 

 for循環:

語法規則:

    for(初始表達式;條件表達式;自增或自減)
    {
            執行語句
            ……
    }

 

功能說明:實現條件循環,當條件成立時,執行語句1,不然跳出循環體

for循環的另外一種形式:(遍歷循環,不推薦)

for( 變量 in 數組或對象)
    {
        執行語句
        ……
    }

while循環:

語法規則:

while (條件){
    語句1;
    ...
}

功能說明:運行功能和for相似,當條件成立循環執行語句花括號{}內的語句,不然跳出循環;一樣支持continue與break語句。

示例:

var i=1;
while (i<=7) {
    document.write("<H"+i+">hello</H "+i+"> ");
    document.write("<br>");
    i++;
}
//循環輸出H1到H7的字體大小

 

異常處理

try {
    //這段代碼從上往下運行,其中任何一個語句拋出異常該代碼塊就結束運行
}
catch (e) {
    // 若是try代碼塊中拋出了異常,catch代碼塊中的代碼就會被執行。
    //e是一個局部變量,用來指向Error對象或者其餘拋出的對象
}
finally {
     //不管try中代碼是否有異常拋出(甚至是try代碼塊中有return語句),finally代碼塊中始終會被執行。
}

注:主動拋出異常 throw Error('xxxx')


 

JavaScript的對象

簡介:

在JavaScript中除了null和undefined之外其餘的數據類型都被定義成了對象,也能夠用建立對象的方法定義變量,String、Math、Array、Date、RegExp都是JavaScript中重要的內置對象,在JavaScript程序大多數功能都是基於對象實現的。

<script language="javascript">
var aa=Number.MAX_VALUE; 
//利用數字對象獲取可表示最大數
var bb=new String("hello JavaScript"); 
//建立字符串對象
var cc=new Date();
//建立日期對象
var dd=new Array("星期一","星期二","星期三","星期四"); 
//數組對象
</script>

 

 

String對象

字符串對象建立

字符串建立(兩種方式)
       ① 變量 = 「字符串」
       ② 字串對象名稱 = new String (字符串)

var str1="hello world";
var str1= new String("hello word");

 

字符串對象的屬性和函數

x.length         ----獲取字符串的長度

 x.toLowerCase()        ----轉爲小寫
 x.toUpperCase()        ----轉爲大寫
 x.trim()               ----去除字符串兩邊空格       


----字符串查詢方法

x.charAt(index)         ----str1.charAt(index);----獲取指定位置字符,其中index爲要獲取的字符索引

x.indexOf(findstr,index)----查詢字符串位置
x.lastIndexOf(findstr)  

x.match(regexp)         ----match返回匹配字符串的數組,若是沒有匹配則返回null
x.search(regexp)        ----search返回匹配字符串的首字符位置索引

                        示例:
                        var str1="welcome to the world of JS!";
                        var str2=str1.match("world");
                        var str3=str1.search("world");
                        alert(str2[0]);  // 結果爲"world"
                        alert(str3);     // 結果爲15
                        

----子字符串處理方法

x.substr(start, length) ----start表示開始位置,length表示截取長度
x.substring(start, end) ----end是結束位置

x.slice(start, end)     ----切片操做字符串
                        示例:
                            var str1="abcdefgh";
                            var str2=str1.slice(2,4);
                            var str3=str1.slice(4);
                            var str4=str1.slice(2,-1);
                            var str5=str1.slice(-3,-1);

                            alert(str2); //結果爲"cd"
                            
                            alert(str3); //結果爲"efgh"
                            
                            alert(str4); //結果爲"cdefg"
                            
                            alert(str5); //結果爲"fg"

x.replace(findstr,tostr) ----    字符串替換

x.split();                 ----分割字符串
                                 var str1="一,二,三,四,五,六,日"; 
                                var strArray=str1.split(",");
                                alert(strArray[1]);//結果爲""
                                
x.concat(addstr)         ----    拼接字符串

Array對象

 數組建立(和python的列表是同樣的)

建立數組的三種方式:

建立方式1:
var arrname = [元素0,元素1,….];          // var arr=[1,2,3];

建立方式2:
var arrname = new Array(元素0,元素1,….); // var test=new Array(100,"a",true);

建立方式3:
var arrname = new Array(長度); 
            //  初始化數組對象:
                var cnweek=new Array(7);
                    cnweek[0]="星期日";
                    cnweek[1]="星期一";
                    ...
                    cnweek[6]="星期六";
var cnweek=new Array(7);
for (var i=0;i<=6;i++){
    cnweek[i]=new Array(2);
}
cnweek[0][0]="星期日";
cnweek[0][1]="Sunday";
cnweek[1][0]="星期一";
cnweek[1][1]="Monday";
...
cnweek[6][0]="星期六";
cnweek[6][1]="Saturday";
二維數組

 

數組對象的屬性和方法

join方法:

x.join(bystr)       ----將數組元素拼接成字符串

                            var arr1=[1, 2, 3, 4, 5, 6, 7];
                var str1=arr1.join("-");
                alert(str1);  //結果爲"1-2-3-4-5-6-7" 
View Code

concat方法:

x.concat(value,...)    ---- 
                   var a = [1,2,3];
                  var b=a.concat(4,5) ;
                  alert(a.toString());  //返回結果爲1,2,3            
                  alert(b.toString());  //返回結果爲1,2,3,4,5
View Code

數組排序-reverse sort:

//x.reverse()
//x.sort()

var arr1=[32, 12, 111, 444];
//var arr1=["a","d","f","c"];

arr1.reverse(); //顛倒數組元素
alert(arr1.toString());
//結果爲444,111,12,32

arr1.sort();    //排序數組元素
alert(arr1.toString());
//結果爲111,12,32,444

//------------------------------
arr=[1,5,2,100];

//arr.sort();
//alert(arr);
//若是就想按着數字比較呢?

function intSort(a,b){
    if (a>b){
        return 1;//-1
    }
    else if(a<b){
        return -1;//1
    }
    else {
        return 0
    }
}

arr.sort(intSort);

alert(arr);

function IntSort(a,b){
    return a-b;
}
View Code

數組切片操做:

//x.slice(start, end)
//
//使用註解
//
//x表明數組對象
//start表示開始位置索引
//end是結束位置下一數組元素索引編號
//第一個數組元素索引爲0
//start、end可爲負數,-1表明最後一個數組元素
//end省略則至關於從start位置截取之後全部數組元素

var arr1=['a','b','c','d','e','f','g','h'];
var arr2=arr1.slice(2,4);
var arr3=arr1.slice(4);
var arr4=arr1.slice(2,-1);

alert(arr2.toString());
//結果爲"c,d" 
alert(arr3.toString());
//結果爲"e,f,g,h"
alert(arr4.toString());
//結果爲"c,d,e,f,g"
View Code

 

刪除子數組:

//x. splice(start, deleteCount, value, ...)

//使用註解

//x表明數組對象
//splice的主要用途是對數組指定位置進行刪除和插入
//start表示開始位置索引
//deleteCount刪除數組元素的個數
//value表示在刪除位置插入的數組元素
//value參數能夠省略       
        
var a = [1,2,3,4,5,6,7,8];
a.splice(1,2);

alert(a.toString());//a變爲 [1,4,5,6,7,8]

a.splice(1,1);

alert(a.toString());//a變爲[1,5,6,7,8]

a.splice(1,0,2,3);

alert(a.toString());//a變爲[1,2,3,5,6,7,8]
View Code

 

數組的push和pop:

//push pop這兩個方法模擬的是一個棧操做

//x.push(value, ...)  壓棧
//x.pop()             彈棧      
//使用註解
//
//x表明數組對象
//value能夠爲字符串、數字、數組等任何值
//push是將value值添加到數組x的結尾
//pop是將數組x的最後一個元素刪除


var arr1=[1,2,3];
arr1.push(4,5);
alert(arr1);
//結果爲"1,2,3,4,5"
arr1.push([6,7]);
alert(arr1)
//結果爲"1,2,3,4,5,6,7"
arr1.pop();
alert(arr1);
//結果爲"1,2,3,4,5"
View Code

數組的shift和unshift:

//x.unshift(value,...)
//x.shift()
//使用註解

//x表明數組對象
//value能夠爲字符串、數字、數組等任何值
//unshift是將value值插入到數組x的開始
//shift是將數組x的第一個元素刪除

var arr1=[1,2,3];
arr1.unshift(4,5);
alert(arr1);  //結果爲"4,5,1,2,3"

arr1. unshift([6,7]);
alert(arr1);  //結果爲"6,7,4,5,1,2,3"

arr1.shift();
alert(arr1);  //結果爲"4,5,1,2,3"
View Code

 

總結js的數組特性:

//  js中數組的特性
         //java中數組的特性,  規定是什麼類型的數組,就只能裝什麼類型.只有一種類型.
         //js中的數組特性1: js中的數組能夠裝任意類型,沒有任何限制.
         //js中的數組特性2: js中的數組,長度是隨着下標變化的.用到多長就有多長.
         var arr5 = ['abc',123,1.14,true,null,undefined,new String('1213'),new Function('a','b','alert(a+b)')];
        /*  alert(arr5.length);//8
         arr5[10] = "hahaha";
         alert(arr5.length); //11
         alert(arr5[9]);// undefined */
View Code

Date對象

建立Date對象

//方法1:不指定參數
var nowd1=new Date();
alert(nowd1.toLocaleString( ));
//方法2:參數爲日期字符串
var nowd2=new Date("2004/3/20 11:12");
alert(nowd2.toLocaleString( ));
var nowd3=new Date("04/03/20 11:12");
alert(nowd3.toLocaleString( ));
//方法3:參數爲毫秒數
var nowd3=new Date(5000);
alert(nowd3.toLocaleString( ));
alert(nowd3.toUTCString());

//方法4:參數爲年月日小時分鐘秒毫秒
var nowd4=new Date(2004,2,20,11,12,0,300);
alert(nowd4.toLocaleString( ));//毫秒並不直接顯示
View Code

 

Date對象的方法—獲取日期和時間

獲取日期和時間
getDate()                 獲取日
getDay ()                 獲取星期
getMonth ()               獲取月(0-11)
getFullYear ()            獲取完全年份
getYear ()                獲取年
getHours ()               獲取小時
getMinutes ()             獲取分鐘
getSeconds ()             獲取秒
getMilliseconds ()        獲取毫秒
getTime ()                返回累計毫秒數(從1970/1/1午夜)
function getCurrentDate(){
        //1. 建立Date對象
        var date = new Date(); //沒有填入任何參數那麼就是當前時間
        //2. 得到當前年份
        var year = date.getFullYear();
        //3. 得到當前月份 js中月份是從0到11.
        var month = date.getMonth()+1;
        //4. 得到當前日
        var day = date.getDate();
        //5. 得到當前小時
        var hour = date.getHours();
        //6. 得到當前分鐘
        var min = date.getMinutes();
        //7. 得到當前秒
        var sec = date.getSeconds();
        //8. 得到當前星期
        var week = date.getDay(); //沒有getWeek
        // 2014年06月18日 15:40:30 星期三
        return year+""+changeNum(month)+""+day+""+hour+":"+min+":"+sec+" "+parseWeek(week);
    }

alert(getCurrentDate());

//解決 自動補齊成兩位數字的方法
    function changeNum(num){
    if(num < 10){
        return "0"+num;
    }else{
        return num;
    }

}
//將數字 0~6 轉換成 星期日到星期六
    function parseWeek(week){
    var arr = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
    //             0      1      2      3 .............
    return arr[week];
}
示例練習

Date對象的方法—設置日期和時間

//設置日期和時間
//setDate(day_of_month)       設置日
//setMonth (month)                 設置月
//setFullYear (year)               設置年
//setHours (hour)         設置小時
//setMinutes (minute)     設置分鐘
//setSeconds (second)     設置秒
//setMillliseconds (ms)       設置毫秒(0-999)
//setTime (allms)     設置累計毫秒(從1970/1/1午夜)
    
var x=new Date();
x.setFullYear (1997);    //設置年1997
x.setMonth(7);        //設置月7
x.setDate(1);        //設置日1
x.setHours(5);        //設置小時5
x.setMinutes(12);    //設置分鐘12
x.setSeconds(54);    //設置秒54
x.setMilliseconds(230);        //設置毫秒230
document.write(x.toLocaleString( )+"<br>");
//返回1997年8月1日5點12分54秒

x.setTime(870409430000); //設置累計毫秒數
document.write(x.toLocaleString( )+"<br>");
//返回1997年8月1日12點23分50秒
View Code

Date對象的方法—日期和時間的轉換

日期和時間的轉換:

getTimezoneOffset():8個時區×15度×4分/度=480;
返回本地時間與GMT的時間差,以分鐘爲單位
toUTCString()
返回國際標準時間字符串
toLocalString()
返回本地格式時間字符串
Date.parse(x)
返回累計毫秒數(從1970/1/1午夜到本地時間)
Date.UTC(x)
返回累計毫秒數(從1970/1/1午夜到國際時間)
View Code

 

Math對象

//該對象中的屬性方法 和數學有關.
   

abs(x)    返回數的絕對值。
exp(x)    返回 e 的指數。
floor(x)對數進行下舍入。
log(x)    返回數的天然對數(底爲e)。
max(x,y)    返回 x 和 y 中的最高值。
min(x,y)    返回 x 和 y 中的最低值。
pow(x,y)    返回 x 的 y 次冪。
random()    返回 0 ~ 1 之間的隨機數。
round(x)    把數四捨五入爲最接近的整數。
sin(x)    返回數的正弦。
sqrt(x)    返回數的平方根。
tan(x)    返回角的正切。

//方法練習:
        //alert(Math.random()); // 得到隨機數 0~1 不包括1.
        //alert(Math.round(1.5)); // 四捨五入
        //練習:獲取1-100的隨機整數,包括1和100
             //var num=Math.random();
             //num=num*10;
             //num=Math.round(num);
             //alert(num)
        //============max  min=========================
        /* alert(Math.max(1,2));// 2
        alert(Math.min(1,2));// 1 */
        //-------------pow--------------------------------
        alert(Math.pow(2,4));// pow 計算參數1 的參數2 次方.
View Code

 Function 對象(重點)

函數的定義

function 函數名 (參數){

函數體; return 返回值; }

 

功能說明:

可使用變量、常量或表達式做爲函數調用的參數
函數由關鍵字function定義
函數名的定義規則與標識符一致,大小寫是敏感的
返回值必須使用return
Function 類能夠表示開發者定義的任何函數。

用 Function 類直接建立函數的語法以下:

  var  函數名 =  new  Function( "參數1" , "參數n" , "function_body" );

雖然因爲字符串的關係,第二種形式寫起來有些困難,但有助於理解函數只不過是一種引用類型,它們的行爲與用 Function 類明確建立的函數行爲是相同的。

兩種方法的示例:

function func1(name){
    alert('hello'+name);
    return 8
}

    ret=func1("yuan");
    alert(ret);


var func2=new Function("name","alert(\"hello\"+name);")
func2("egon")
View Code

注意:js的函數加載執行與python不一樣,它是總體加載完纔會執行,因此執行函數放在函數聲明上面或下面均可以:

<script>
    //f(); --->OK

    function f(){
        console.log("hello")

    }

    f() //----->OK
</script>

 

Function 對象的屬性

如前所述,函數屬於引用類型,因此它們也有屬性和方法。
好比,ECMAScript 定義的屬性 length 聲明瞭函數指望的參數個數

alert(func1.length)

Function 的調用

function func1(a,b){

    alert(a+b);
}

    func1(1,2);  //3
    func1(1,2,3);//3
    func1(1);    //NaN
    func1();     //NaN

    //只要函數名寫對便可,參數怎麼填都不報錯.

-------------------面試題-----------
 function a(a,b){
    alert(a+b);
}

   var a=1;
   var b=2;
   a(a,b)
View Code

函數的內置對象arguments

function add(a,b){

        console.log(a+b);//3
        console.log(arguments.length);//2
        console.log(arguments);//[1,2]

    }
    add(1,2)

    ------------------arguments的用處1 ------------------
    function nxAdd(){
        var result=0;
        for (var num in arguments){
            result+=arguments[num]
        }
        alert(result)

    }

    nxAdd(1,2,3,4,5)

//     ------------------arguments的用處2 ------------------

    function f(a,b,c){
        if (arguments.length!=3){
            throw new Error("function f called with "+arguments.length+" arguments,but it just need 3 arguments")
        }
        else {
            alert("success!")
        }
    }

    f(1,2,3,4,5)
View Code

匿名函數

// 匿名函數
    var func = function(arg){
        return "tony";
    }

// 匿名函數的應用
    (function(){
        alert("tony");
    } )()

    (function(arg){
        console.log(arg);
    })('123')
View Code
相關文章
相關標籤/搜索