python大神-javascript知識
阿新 • • 發佈:2017-10-23
異常處理 數據 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知識