JavaScript 冒號

JavaScript 冒號

參考1:http://wenda.tianya.cn/question/246afbedd4d2f5a9

 

參考2:http://www.jb51.net/article/18465.htm

 

JavaScript中冒號(:)是做什麼的?你可能經常看到這的寫法:

你可能很習慣認爲這是一個僞協議,意思是使用JavaScript語法解析後面的代碼,在a標籤的href中才是僞協議!那麼如果這個代碼變成這樣呢:

你可以試試,代碼並不會出錯,因爲在JavaScript中這樣的寫法是合法的。其語法是:

labelName:statement

實際上,在onclick或onmouseover這樣的屬性的值是一段JavaScript代碼片段,因此剛纔的代碼也是合法的,可執行的。

在JavaScript中,我們常見的使用冒號(:)的情況有:

1,對象表達法
冒號在這裏用來分割對象的屬性和屬性值。

2,三目運算
冒號在這裏用來分割不同條件的返回值。

3,分支語句
冒號在這裏用來分割被羅列的switch中表達式的值和對應的代碼塊。

上面的情況很常見,而且大家並不陌生,那麼一開始我們講到的寫法又是什麼意思呢?

labelName:statement

這種是標籤的寫法,如果你略懂windows中的批處理,你應該一下就知道它的作用,在批處理中,標籤用來標識代碼位置,在需要改變代碼流程的時候,可以goto labelName來實現指定的跳轉。而JavaScript中它的功能也與此類似,你可以用標籤來標識一個循環,然後用break或continue來改變程序的執行流程。我們來看下下面的例子:

提示:你可以先修改部分代碼再運行。

標籤名可以使用合法的JavaScript標識符而不能是保留字。

因此,到這裏我們就清楚了像

這樣的寫法實際是標籤的寫法,至於在這裏使用標籤有沒有實際意義就看個人在實現某些效果的時候是否要用標籤來區分某些結果了。

 

 

 

雖然之前寫過不少的javascirpt的腳本,但是對冒號:卻不甚了了,感覺即陌生又熟悉,沒辦法老毛病又犯了,不把問題搞清楚那個(:)
-
老在眼前晃,於是在網上搜吧,查資料,很鬱悶網上介紹冒號用法的貼子不多,而且比較零碎,也不夠深入,看完讓人更迷糊,折騰了兩天,終於對冒號(:)有了更進一步的瞭解,希望對想了解冒號用法的人有所幫助。
1、switch語句分支
2、?:三元表達式的false
3、聲明對象直接量的成員
4、聲明標籤

1和2相信地球人都知道吧?如果有人不知道,那我改成地球上的程序員都知道,哈哈
3、對象直接量我們也經常用,什麼是對象直接量呢?
對象直接量(也稱爲對象初始化程序)是由一個列表構成的,這個列表的元素是用冒號分隔的屬性/值對,元素之間用逗號隔開了,整個列表包含在花括號之中。
javascript中的對象可以像C#、JAVA這些面向對象的語言中的對象一樣,擁有屬性和方法。
我們創建javascript對象有很多種方法,例如,你可以用Object創建,
複製代碼 代碼如下:
var obj1 = new Object();
obj1.X = "20px";
obj1.Y = "30px";
obj1.myFunction = function() { alert("我是一個方法!"); };
obj1.myFunction();

用對象直接量創建一個對象:
複製代碼 代碼如下:
var obj2={X:"20px",Y:"30px",myFunction:function(){alert("我是一個方法!");}}
obj2.myFunction();

用對象直接量創建對象看上去很簡潔.
當然你也可以先寫個類似Class類的東西然後用構造函數創建:
複製代碼 代碼如下:
function myClass(x, y) {
this.X = x;
this.Y = y;
}
myClass.prototype.myFunction=function(){
alert("我是一個方法!");
}
var obj3 = new myClass("20px", "30px");
obj3.myFunction();

4、聲明標籤
腳本語言有很多,除了javascript之外,我們也可以用其它腳本語言來實現javascript所能實現的功能;
例:
<input type="button" οnclick="vbscript:vbFunction()" value='按鈕'/>
當點擊按鈕時就會用vbscript語法去執行你用vbscript定義的vbFunction方法;
如果把onclick後面的vbscript:vbFunction(),改成javascript:vbFunction();就會出錯。
這些聲明你也可以不寫直接調用方法,
<input type="button" οnclick="vbFunction()" value='按鈕'/>
這時onclick中的方法, 無論你用vbscript還是javascript,IE瀏覽器會自行識別,用相應的語法去執行,當然其它瀏覽器是不支持vbscript的.
平時我們用javascript習慣上是加聲明的,也就是"javascript:",
<input type="button" οnclick="javascript:alert('你點擊了我!')" value='按鈕'/>
"javascript:"經常被那些自稱黑客的人們利用,利用"javascript:"繞過一些簡單的或者更高級一點的html表單限制及cookie/session驗證;以及SQL注入.如果想了解可以到別的地方查,不過學會千萬不要搞破壞啊,哈哈
做個簡單的小例子:
首先打開www.baidu.com百度的首頁,然後直接把下面這句複製到瀏覽器的地址欄中,按回車,
javascript:alert(document.forms[0].wd.value='csdn');document.forms[0].submit()
效果怎麼樣呢?不錯,我們利用javascript直接操作了搜索框中的文本,還有執行了表單的提交,更復雜的操作,可以自己研究。
詳細出處參考:http://www.jb51.net/article/18465.htm

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章