1. 程式人生 > >python大神-javascript知識

python大神-javascript知識

異常處理 數據 delete nbsp img del math fin sta

基礎了解:瀏覽器內置了JavaScript語言的解釋器(實現動畫效果)

一、以什麽方式存在

  1、在html文檔使用的方式

1 <!-- 方式一 --> 
2 <script type"text/javascript" src="JS文件"></script> 
3    
4 <!-- 方式二 --> 
5 <script type"text/javascript"> 
6     Js代碼內容 
7 </script>

  2、js存放位置

1 ?HTML的head中
2 ?HTML的body代碼塊底部(推薦)

二、變量

基本了解:有var代表局部變量,沒有聲明則是全局變量

技術分享
 1 <script type="text/javascript"> 
 2  
 3     // 全局變量 
 4     name = seven; 
 5  
 6     function func(){ 
 7         // 局部變量 
 8         var age = 18; 
 9  
10         // 全局變量 
11         gender = ""
12     } 
13 </script>
變量

三、數據類型

基本了解:數據類型有兩類:1)原始類型;2)對象類型:

1 ?原始類型 
2   ?數字
3   ?字符串
4   ?布爾值
5 ?對象類型 
6   ?數組
7   ?“字典”
8   ?...
// null、undefined
null是JavaScript語言的關鍵字,它表示一個特殊值,常用來描述“空值”。
undefined是一個特殊值,表示變量未定義。

  1、數字(number)

基本了解:JavaScript中不區分整數值和浮點數值,JavaScript中所有數字均用浮點數值表示。

轉換:

?parseInt(..)    將某值轉換成數字,不成功則NaN
?parseFloat(..) 將某值轉換成浮點數,不成功則NaN
特殊值:

? NaN,非數字。可使用 isNaN(num) 來判斷。
?Infinity,無窮大。可使用 isFinite(num) 來判斷。
技術分享
常量

Math.E
常量e,自然對數的底數。

Math.LN10
10的自然對數。

Math.LN2
2的自然對數。

Math.LOG10E
以10為底的e的對數。

Math.LOG2E
以2為底的e的對數。

Math.PI
常量figs/U03C0.gif。

Math.SQRT1_2
2的平方根除以1。

Math.SQRT2
2的平方根。

靜態函數

Math.abs( )
計算絕對值。

Math.acos( )
計算反余弦值。

Math.asin( )
計算反正弦值。

Math.atan( )
計算反正切值。

Math.atan2( )
計算從X軸到一個點的角度。

Math.ceil( )
對一個數上舍入。

Math.cos( )
計算余弦值。

Math.exp( )
計算e的指數。

Math.floor( )
對一個數下舍人。

Math.log( )
計算自然對數。

Math.max( )
返回兩個數中較大的一個。

Math.min( )
返回兩個數中較小的一個。

Math.pow( )
計算xy。

Math.random( )
計算一個隨機數。

Math.round( )
舍入為最接近的整數。

Math.sin( )
計算正弦值。

Math.sqrt( )
計算平方根。

Math.tan( )
計算正切值。
數值計算

  2、字符串(string)

技術分享
 1 obj.length                           長度 
 2   
 3 obj.trim()                           移除空白 
 4 obj.trimLeft() 
 5 obj.trimRight) 
 6 obj.charAt(n)                        返回字符串中的第n個字符 
 7 obj.concat(value, ...)               拼接 
 8 obj.indexOf(substring,start)         子序列位置 
 9 obj.lastIndexOf(substring,start)     子序列位置 
10 obj.substring(from, to)              根據索引獲取子序列 
11 obj.slice(start, end)                切片 
12 obj.toLowerCase()                    大寫 
13 obj.toUpperCase()                    小寫 
14 obj.split(delimiter, limit)          分割 
15 obj.search(regexp)                   從頭開始匹配,返回匹配成功的第一個位置(g無效) 
16 obj.match(regexp)                    全局搜索,如果正則中有g表示找到全部,否則只找到第一個。 
17 obj.replace(regexp, replacement)     替換,正則中有g則替換所有,否則只替換第一個匹配項, 
18                                      $數字:匹配的第n個組內容; 
19                                      $&:當前匹配的內容; 
20                                      $`:位於匹配子串左側的文本; 
21                                      $:位於匹配子串右側的文本 
22                                      $$:直接量$符號
View Code

  3、布爾類型(boolean)

布爾類型僅包含真假,與Python不同的是其首字母小寫。

?==      比較值相等
?!=       不等於
?===   比較值和類型相等
?!===  不等於
?||        或
?&&      且

  4、數組(與python的列表類似)

技術分享
 1 obj.length          數組的大小 
 2   
 3 obj.push(ele)       尾部追加元素 
 4 obj.pop()           尾部獲取一個元素 
 5 obj.unshift(ele)    頭部插入元素 
 6 obj.shift()         頭部移除元素 
 7 obj.splice(start, deleteCount, value, ...)  插入、刪除或替換數組的元素 
 8                     obj.splice(n,0,val) 指定位置插入元素 
 9                     obj.splice(n,1,val) 指定位置替換元素 
10                     obj.splice(n,1)     指定位置刪除元素 
11 obj.slice( )        切片 
12 obj.reverse( )      反轉 
13 obj.join(sep)       將數組元素連接起來以構建一個字符串 
14 obj.concat(val,..)  連接數組 
15 obj.sort( )         對數組元素進行排序
常見功能:

四、其他

  1、序列化

?JSON.stringify(obj)   序列化
?JSON.parse(str)        反序列化

  2、轉義

?decodeURI( )                   URl中未轉義的字符
?decodeURIComponent( )   URI組件中的未轉義字符
?encodeURI( )                   URI中的轉義字符
?encodeURIComponent( )   轉義URI組件中的字符
?escape( )                         對字符串轉義
?unescape( )                     給轉義字符串解碼
?URIError                         由URl的編碼和解碼方法拋出

  3、eval(等同於python中eval和exec的合集)

?eval() 
?EvalError   執行字符串中的JavaScript代碼

  4、正則表達式

1)、定義正則表達式

?/.../  用於定義正則表達式
?/.../g 表示全局匹配
?/.../i 表示不區分大小寫
?/.../m 表示多行匹配
JS正則匹配時本身就是支持多行,此處多行匹配只是影響正則表達式^和$,m模式也會使用^$來匹配換行的內容)
技術分享
1 var pattern = /^Java\w*/gm; 
2 var text = "JavaScript is more fun than \nJavaEE or JavaBeans!"; 
3 result = pattern.exec(text) 
4 result = pattern.exec(text) 
5 result = pattern.exec(text)
例子

註:定義正則表達式也可以 reg= new RegExp()

  2)、匹配

    JavaScript中支持正則表達式,其主要提供了兩個功能:

    a. test(string) 檢查字符串中是否和正則匹配(沒有匹配到不會有返回值)

n = uui99sdf
reg = /\d+/ 
reg.test(n)  ---> true
 
# 只要正則在字符串中存在就匹配,如果想要開頭和結尾匹配的話,就需要在正則前

    b. exec(string) 獲取正則表達式匹配的內容,如果未匹配,值為null,否則,獲取匹配成功的數組。

容,如果未匹配,值為null,否則,獲取匹配成功的數組。 
 
非全局模式 
    獲取匹配結果數組,註意:第一個元素是第一個匹配的結果,後面元素是正則子匹配(正則內容分組匹配) 
    var pattern = /\bJava\w*\b/; 
    var text = "JavaScript is more fun than Java or JavaBeans!"; 
    result = pattern.exec(text) 
 
    var pattern = /\b(Java)\w*\b/; 
    var text = "JavaScript is more fun than Java or JavaBeans!"; 
    result = pattern.exec(text) 
 
全局模式 
    需要反復調用exec方法,來一個一個獲取結果,直到匹配獲取結果為null表示獲取完畢 
    var pattern = /\bJava\w*\b/g; 
    var text = "JavaScript is more fun than Java or JavaBeans!"; 
    result = pattern.exec(text) 
 
    var pattern = /\b(Java)\w*\b/g; 
    var text = "JavaScript is more fun than Java or JavaBeans!"; 
    result = pattern.exec(text)

  3)字符串中相關方法

obj.search(regexp)                   獲取索引位置,搜索整個字符串,返回匹配成功的第一個位置(g模式無效) 
obj.match(regexp)                    獲取匹配內容,搜索整個字符串,獲取找到第一個匹配內容,如果正則是g模式找到全部 
obj.replace(regexp, replacement)     替換匹配替換,正則中有g則替換所有,否則只替換第一個匹配項, 
                                        $數字:匹配的第n個組內容; 
                                          $&:當前匹配的內容; 
                                          $`:位於匹配子串左側的文本; 
                                          $:位於匹配子串右側的文本 
                                          $$:直接量$符號

5、時間處理

JavaScript中提供了時間相關的操作,時間操作中分為兩種時間:

?時間統一時間
?本地時間(東8區)
更多操作參見:http://www.shouce.ren/api/javascript/main.html

五、語句與異常

  1、條件語句

JavaScript中支持兩個中條件語句,分別是:if (與python用法類似)和 switch

技術分享
 if(條件){
 
    }else if(條件){
         
    }else{
 
    }
if 技術分享
switch(name){
        case 1:
            age = 123;
            break;
        case 2:
            age = 456;
            break;
        default :
            age = 777;
    }
switch

   2、循環語句(索引的循環)

技術分享
var names = ["alex", "tony", "rain"];
 
for(var i=0;i<names.length;i++){
    console.log(i);
    console.log(names[i]);
}
方式one 技術分享
var names = ["alex", "tony", "rain"];

for(var index in names){
    console.log(index);
    console.log(names[index]);
}
方式two 技術分享
while(條件){
    // break;
    // continue;
}
while

  3、異常處理

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

註:主動跑出異常 throw Error(‘xxxx‘)

六、函數

1、基本函數(有三類)

 1 // 普通函數 
 2     function func(arg){ 
 3         return true; 
 4     } 
 5            
 6 // 匿名函數 
 7     var func = function(arg){ 
 8         return "tony"; 
 9     } 
10    
11 // 自執行函數 
12     (function(arg){ 
13         console.log(arg); 
14     })(123)

2、函數與全局的作用域(重點)

基本了解:每個函數都有自己的作用域(當函數存在時,就已經存在作用域了)

切記:所有的作用域在創建函數且未執行時候就已經存在。

例子:(每個函數裏的變量是自己的一個域)

技術分享
function func(){
              for(i=0;i<3;i++){
                  setInterval(function(){   # setInterval定時器不影響函數的運行,定時器有自己的解析器;
                      console.log(i);        
                  },1000)
              }
          }
          func();
          
      輸出的結果是:3(每秒出現一次3)
      
      例子2:
      <div id="btns">
          <input type="button" value="點我1" />
          <input type="button" value="點我2" />
          <input type="button" value="點我3" />
      </div>
      
      <script>
          var btns = document.getElemetById(btns).chidren;
          for(var j=0;j<btns.length;j++){
              var current_input = btns[j];
              current_input.onclick = funtion(){        # 1)點擊按鈕執行funtion函數,j在funtion函數作用域裏找不到值;
                  alert(j)                                # 2)j往父集找,這時for循環已經執行完,j=3;
              }
          }
      </script>
View Code

3、閉包

基本了解:指嵌套函數被傳入了變量而沒有執行。

技術分享
閉包是指可以包含自由(未綁定到特定對象)變量的代碼塊。

「閉包」,是指擁有多個變量和綁定了這些變量的環境的表達式(通常是一個函數),因而這些變量也是該表達式的一部分。

閉包是個函數,而它「記住了周圍發生了什麽」。表現為由「一個函數」體中定義了「另個函數」

由於作用域鏈只能從內向外找,默認外部無法獲取函數內部變量。閉包,在外部獲取函數內部的變量。
模糊概念 技術分享
function f2(){ 
    var arg= [11,22]; 
    function f3(){ 
        return arg; 
    } 
    return f3; 
} 
 
ret = f2(); 
ret();
例子

4、面向對象

 1 function Foo (name,age) { 
 2     this.Name = name; 
 3     this.Age = age; 
 4     this.Func = function(arg){ 
 5         return this.Name + arg; 
 6     } 
 7 } 
 8    
 9 var obj = new Foo(alex, 18); 
10 var ret = obj.Func("sb"); 
11 console.log(ret);

對於上述代碼需要註意:

  • Foo充當的構造函數
  • this代指對象
  • 創建對象時需要使用 new

上述代碼中每個對象中均保存了一個相同的Func函數,從而浪費內存。使用原型和可以解決該問題:

 1 function Foo (name,age) { 
 2     this.Name = name; 
 3     this.Age = age; 
 4 } 
 5 Foo.prototype = { 
 6     GetInfo: function(){ 
 7         return this.Name + this.Age 
 8     }, 
 9     Func : function(arg){ 
10         return this.Name + arg; 
11     } 
12 }

 

python大神-javascript知識