js中value^= 是按位異或賦值運(yùn)算符,右面的值異或VALUE 然后賦值給VALUE。

目前創(chuàng)新互聯(lián)已為上千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、洞口網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
^是異或運(yùn)算符,異或的規(guī)則是轉(zhuǎn)換成二進(jìn)制比較,相同為0,不同為1.
一個(gè)數(shù)a與另一個(gè)數(shù)b異或的結(jié)果等于a^b,用結(jié)果( a^b)異或a,就會(huì)得到b;
上面的結(jié)果用代碼來驗(yàn)證。代碼( a=a^b; b=a^b; a=a^b;)可以轉(zhuǎn)換成這樣。
int c=a^b ; ------------ 01=10^11 得到結(jié)果C( a^b)
b=c^b; ------------ 10=01^11 用結(jié)果( a^b)異或a,就會(huì)得到b;
a=c^a; -------------11=01^10 用結(jié)果( a^b)異或b,就會(huì)得到a;
擴(kuò)展資料
JavaScript腳本語言特點(diǎn)
(1)腳本語言。JavaScript是一種解釋型的腳本語言,C、C++等語言先編譯后執(zhí)行,而JavaScript是在程序的運(yùn)行過程中逐行進(jìn)行解釋。
(2)基于對(duì)象。JavaScript是一種基于對(duì)象的腳本語言,它不僅可以創(chuàng)建對(duì)象,也能使用現(xiàn)有的對(duì)象。
(3)簡(jiǎn)單。JavaScript語言中采用的是弱類型的變量類型,對(duì)使用的數(shù)據(jù)類型未做出嚴(yán)格的要求,是基于Java基本語句和控制的腳本語言,其設(shè)計(jì)簡(jiǎn)單緊湊。
(4)動(dòng)態(tài)性。JavaScript是一種采用事件驅(qū)動(dòng)的腳本語言,它不需要經(jīng)過Web服務(wù)器就可以對(duì)用戶的輸入做出響應(yīng)。在訪問一個(gè)網(wǎng)頁時(shí),鼠標(biāo)在網(wǎng)頁中進(jìn)行鼠標(biāo)點(diǎn)擊或上下移、窗口移動(dòng)等操作JavaScript都可直接對(duì)這些事件給出相應(yīng)的響應(yīng)。
(5)跨平臺(tái)性。JavaScript腳本語言不依賴于操作系統(tǒng),僅需要瀏覽器的支持。因此一個(gè)JavaScript腳本在編寫后可以帶到任意機(jī)器上使用,前提上機(jī)器上的瀏覽器支 持JavaScript腳本語言,目前JavaScript已被大多數(shù)的瀏覽器所支持。
參考資料來源:百度百科—javascript
javascript 中的?是屬性。例如:var text={??x:1,y:2?? }? ? ,? 輸出:text.x?????? 那么值就是1?? 如此而已。
javascript的相關(guān)概念:
語句
JavaScript程序是由若干語句組成的,語句是編寫程序的指令。JavaScript提供了完整的基本編程語句,它們是:
賦值語句、switch選擇語句、while循環(huán)語句、for循環(huán)語句、for each循環(huán)語句、do...while循環(huán)語句、break循環(huán)中止語句、continue循環(huán)中斷語句、with語句、try…catch語句、if語句(if..else,if…else if…)。
函數(shù)
函數(shù)是命名的語句段,這個(gè)語句段可以被當(dāng)作一個(gè)整體來引用和執(zhí)行。使用函數(shù)要注意以下幾點(diǎn):
1)函數(shù)由關(guān)鍵字function定義(也可由Function構(gòu)造函數(shù)構(gòu)造)
2)使用function關(guān)鍵字定義的函數(shù)在一個(gè)作用域內(nèi)是可以在任意處調(diào)用的(包括定義函數(shù)的語句前);而用var關(guān)鍵字定義的必須定義后才能被調(diào)用
3)函數(shù)名是調(diào)用函數(shù)時(shí)引用的名稱,它對(duì)大小寫是敏感的,調(diào)用函數(shù)時(shí)不可寫錯(cuò)函數(shù)名
4)參數(shù)表示傳遞給函數(shù)使用或操作的值,它可以是常量,也可以是變量,也可以是函數(shù),在函數(shù)內(nèi)部可以通過arguments對(duì)象(arguments對(duì)象是一個(gè)偽數(shù)組,屬性callee引用被調(diào)用的函數(shù))訪問所有參數(shù)
5)return語句用于返回表達(dá)式的值。
6)yield語句扔出一個(gè)表達(dá)式,并且中斷函數(shù)執(zhí)行直到下一次調(diào)用next。
一般的函數(shù)都是以下格式:
function myFunction(params){
//執(zhí)行的語句
}
函數(shù)表達(dá)式:
var myFunction=function(params){
//執(zhí)行的語句
}
var myFunction = function(){
//執(zhí)行的語句
}
myFunction();//調(diào)用函數(shù)
匿名函數(shù),它常作為參數(shù)在其他函數(shù)間傳遞:
window.addEventListener('load',function(){
//執(zhí)行的語句
},false);
對(duì)象
JavaScript的一個(gè)重要功能就是面向?qū)ο蟮墓δ埽ㄟ^基于對(duì)象的程序設(shè)計(jì),可以用更直觀、模塊化和可重復(fù)使用的方式進(jìn)行程序開發(fā)。
一組包含數(shù)據(jù)的屬性和對(duì)屬性中包含數(shù)據(jù)進(jìn)行操作的方法,稱為對(duì)象。比如要設(shè)定網(wǎng)頁的背景顏色,所針對(duì)的對(duì)象就是document,所用的屬性名是bgcolor,如document.bgcolor="blue",就是表示使背景的顏色為藍(lán)色。
事件
用戶與網(wǎng)頁交互時(shí)產(chǎn)生的操作,稱為事件。事件可以由用戶引發(fā),也可能是頁面發(fā)生改變,甚至還有你看不見的事件(如Ajax的交互進(jìn)度改變)。絕大部分事件都由用戶的動(dòng)作所引發(fā),如:用戶按鼠標(biāo)的按鍵,就產(chǎn)生click事件,若鼠標(biāo)的指針在鏈接上移動(dòng),就產(chǎn)生mouseover事件等等。在JavaScript中,事件往往與事件處理程序配套使用。
而對(duì)事件的處理,W3C的方法是用addEventListener()函數(shù),它有三個(gè)參數(shù):事件,引發(fā)的函數(shù),是否使用事件捕捉。為了安全性,建議將第三個(gè)參數(shù)始終設(shè)置為false
傳統(tǒng)的方法就是定義元素的on…事件,它就是W3C的方法中的事件參數(shù)前加一個(gè)“on”。而IE的事件模型使用attachEvent和dettachEvent對(duì)事件進(jìn)行綁定和刪除。JavaScript中事件還分捕獲和冒泡兩個(gè)階段,但是傳統(tǒng)綁定只支持冒泡事件。
變量
1、常用類型
Object:對(duì)象
Array:數(shù)組
Number:數(shù)
Boolean:布爾值,只有true和false兩個(gè)值,是所有類型中占用內(nèi)存最少的
null:一個(gè)空值,唯一的值是null,表空引用
undefined:沒有定義或賦值的變量
2、命名形式
一般形式是:
var 變量名表;
其中,var是javascript的保留字,表面接下來是變量說明,變量名表是用戶自定義標(biāo)識(shí)符,變量之間用逗號(hào)分開。和C++等程序不同,在javascript中,變量說明不需要給出變量的數(shù)據(jù)類型。此外,變量也可以不說明而直接使用。
3、作用域
變量的作用域由聲明變量的位置決定,決定哪些腳本命令可訪問該變量。在函數(shù)外部聲明的變量稱為全局變量,其值能被所在HTML文件中的任何腳本命令訪問和修改。在函數(shù)內(nèi)部聲明的變量稱為局部變量。只有當(dāng)函數(shù)被執(zhí)行時(shí),變量被分配臨時(shí)空間,函數(shù)結(jié)束后,變量所占據(jù)的空間被釋放。局部變量只能被函數(shù)內(nèi)部的語句訪問,只對(duì)該函數(shù)是可見的,而在函數(shù)外部是不可見的。
運(yùn)算符
javascript提供了豐富的運(yùn)算功能,包括算術(shù)運(yùn)算、關(guān)系運(yùn)算、邏輯運(yùn)算和連接運(yùn)算。
1.算術(shù)運(yùn)算符
javascript中的算術(shù)運(yùn)算符有單目運(yùn)算符和雙目運(yùn)算符。雙目運(yùn)算符包括:+(加)、-(減)、*(乘)、/(除)、%(取模)、|(按位或)、(按位與)、(左移)、(右移)等。單目運(yùn)算符有:-(取反)、~(取補(bǔ))、++(遞加1)--(遞減1)等。
2.關(guān)系運(yùn)算符
關(guān)系運(yùn)算符又稱比較運(yùn)算,運(yùn)算符包括:(小于)、=(小于等于)、(大于)、=(大于等于)、==(等于)和!=(不等于)以及 ===) 和 !==。
關(guān)系運(yùn)算的運(yùn)算結(jié)果為布爾值,如果條件成立,則結(jié)果為true,否則為false。
3.邏輯運(yùn)算符
邏輯運(yùn)算符有:(邏輯與)、||(邏輯或)、!(取反,邏輯非)、^(邏輯異或)。
4.字符串連接運(yùn)算符
連接運(yùn)算用于字符串操作,運(yùn)算符為+(用于強(qiáng)制連接),將兩個(gè)或多個(gè)字符串連結(jié)為一個(gè)字符串。
5.三目操作符?
三目操作符“?:”格式為:
操作數(shù)?表式1:表達(dá)式2
三目操作符“?:”構(gòu)成的表達(dá)式,其邏輯功能為:若操作數(shù)的結(jié)果為true,則表述式的結(jié)果為表達(dá)式1,否則為表達(dá)式2。例如max=(ab)?a:b;該語句的功能就是將a,b中的較大的數(shù)賦給max。
相關(guān)規(guī)則
在JavaScript中,“==="是全同運(yùn)算符,只有當(dāng)值相等,數(shù)據(jù)類型也相等時(shí)才成立。
等同運(yùn)算符“=="的比較規(guī)則:
當(dāng)兩個(gè)運(yùn)算數(shù)的類型不同時(shí):將他們轉(zhuǎn)換成相同的類型。
1)一個(gè)數(shù)字與一個(gè)字符串,字符串轉(zhuǎn)換成數(shù)字之后,進(jìn)行比較。
2)true轉(zhuǎn)換為1、false轉(zhuǎn)換為0,進(jìn)行比較。
3)一個(gè)對(duì)象、數(shù)組、函數(shù)與 一個(gè)數(shù)字或字符串,對(duì)象、數(shù)組、函數(shù)轉(zhuǎn)換為原始類型的值,然后進(jìn)行比較。(先使用valueOf,如果不行就使用toString)
4)其他類型的組合不相等。
JavaScript想兩個(gè)運(yùn)算數(shù)類型相同,或轉(zhuǎn)換成相同類型后:
1)2個(gè)字符串:同一位置上的字符相等,2個(gè)字符串就相同。
2)2個(gè)數(shù)字:2個(gè)數(shù)字相同,就相同。如果一個(gè)是NaN,或兩個(gè)都是NaN,則不相同。
3)2個(gè)都是true,或者2個(gè)都是false,則相同。
4)2個(gè)引用的是同一個(gè)對(duì)象、函數(shù)、數(shù)組,則他們相等,如果引用的不是同一個(gè)對(duì)象、函數(shù)、數(shù)組,則不相同,即使這2個(gè)對(duì)象、函數(shù)、數(shù)組可以轉(zhuǎn)換成完全相等的原始值。
5)2個(gè)null,或者2個(gè)都是未定義的,那么他們相等。
而“===”是全同運(yùn)算符,全同運(yùn)算符遵循等同運(yùn)算符的比較規(guī)則,但是它不對(duì)運(yùn)算數(shù)進(jìn)行類型轉(zhuǎn)換,當(dāng)兩個(gè)運(yùn)算數(shù)的類型不同時(shí),返回false;只有當(dāng)兩個(gè)運(yùn)算數(shù)的類型相同的時(shí)候,才遵循等同運(yùn)算符的比較規(guī)則進(jìn)行比較。
例如:null==undefined 會(huì)返回真, 但是null===undefined 就會(huì)返回假!
表達(dá)式
表達(dá)式是指將常量、變量、函數(shù)、運(yùn)算符和括號(hào)連接而成的式子。根據(jù)運(yùn)算結(jié)果的不同,表達(dá)式可分為算術(shù)表達(dá)式、字符表達(dá)式、和邏輯表達(dá)式。
腳本語言
不同于服務(wù)器端腳本語言,例如PHP與ASP,JavaScript是客戶端腳本語言,也就是說JavaScript是在用戶的瀏覽器上運(yùn)行,不需要服務(wù)器的支持而可以獨(dú)立運(yùn)行。所以在早期程序員比較青睞于JavaScript以減少對(duì)服務(wù)器的負(fù)擔(dān),而與此同時(shí)也帶來另一個(gè)問題:安全性。而隨著服務(wù)器的強(qiáng)壯,雖然程序員更喜歡運(yùn)行于服務(wù)端的腳本以保證安全,但JavaScript仍然以其跨平臺(tái)、容易上手等優(yōu)勢(shì)大行其道。
JavaScript是一種腳本語言,其源代碼在發(fā)往客戶端運(yùn)行之前不需經(jīng)過編譯,而是將文本格式的字符代碼發(fā)送給瀏覽器由瀏覽器解釋運(yùn)行。解釋語言的弱點(diǎn)是安全性較差,而且在JavaScript中,如果一條運(yùn)行不了,那么下面的語言也無法運(yùn)行。而且由于每次重新加載都會(huì)重新解譯,加載后,有些代碼會(huì)延遲至運(yùn)行時(shí)才解譯,甚至?xí)啻谓庾g,所以速度較慢。
與其相對(duì)應(yīng)的是編譯語言,例如Java。Java的源代碼在傳遞到客戶端運(yùn)行之前,必須經(jīng)過編譯,因而客戶端上必須具有相應(yīng)平臺(tái)上的仿真器或解釋器,它可以通過編譯器或解釋器實(shí)現(xiàn)獨(dú)立于某個(gè)特定的平臺(tái)編譯代碼的束縛。但是它必須在服務(wù)器端進(jìn)行編譯,這樣就拖延了時(shí)間。但因?yàn)橐呀?jīng)封裝,所以能保證安全性。
Javascript庫
庫,指得是可以方便應(yīng)用到現(xiàn)有開發(fā)體系中的、現(xiàn)成的代碼資源。庫不僅為大部分日常的DOM腳本編程工作提供了快捷的解決方案,而且也提供了許多獨(dú)特的工具。雖然庫使用起來很方便,但它們也并非能解決你所有的問題。在使用庫之前,一定要保證真正理解javascript的DOM原理。
這些庫一般是一個(gè)(或多個(gè))js(Javascript的縮寫)文件,只要把他們導(dǎo)入你的網(wǎng)頁就能使用了。
常用的庫有:
jQuery:javascript庫中的新成員,提供css和xpath選擇符查找元素、ajax、動(dòng)畫效果等
JSer: 國人開發(fā)的一款全功能的開源腳本框架. 借助JSer,可以便捷的操作DOM、CSS樣式訪問、屬性讀寫、事件綁定、行為切換、動(dòng)態(tài)載入、數(shù)據(jù)緩存、URL與AJAX等眾多功能。
dojo:一個(gè)巨大的庫,包括的東西很多,dijit和dojox是dojo的擴(kuò)展,幾乎你想要的各種javascript程序都包括了。
prototype:一個(gè)非常流行的庫,使用了原型鏈向javascript中添加了很多不錯(cuò)的函數(shù)
YUI:(YahooYUI庫)yahoo!用戶界面,非常實(shí)用,提供各種解決方案。
ExtJs:組件非常豐富,皮膚也很漂亮,動(dòng)畫效果也豐富。
語句
JavaScript程序是由若干語句組成的,語句是編寫程序的指令。JavaScript提供了完整的基本編程語句,它們是:
賦值語句、switch選擇語句、while循環(huán)語句、for循環(huán)語句、for each循環(huán)語句、do...while循環(huán)語句、break循環(huán)中止語句、continue循環(huán)中斷語句、with語句、try…catch語句、if語句(if..else,if…else if…)。
函數(shù)
函數(shù)是命名的語句段,這個(gè)語句段可以被當(dāng)作一個(gè)整體來引用和執(zhí)行。使用函數(shù)要注意以下幾點(diǎn):
1)函數(shù)由關(guān)鍵字function定義(也可由Function構(gòu)造函數(shù)構(gòu)造)
2)使用function關(guān)鍵字定義的函數(shù)在一個(gè)作用域內(nèi)是可以在任意處調(diào)用的(包括定義函數(shù)的語句前);而用var關(guān)鍵字定義的必須定義后才能被調(diào)用
3)函數(shù)名是調(diào)用函數(shù)時(shí)引用的名稱,它對(duì)大小寫是敏感的,調(diào)用函數(shù)時(shí)不可寫錯(cuò)函數(shù)名
4)參數(shù)表示傳遞給函數(shù)使用或操作的值,它可以是常量,也可以是變量,也可以是函數(shù),在函數(shù)內(nèi)部可以通過arguments對(duì)象(arguments對(duì)象是一個(gè)偽數(shù)組,屬性callee引用被調(diào)用的函數(shù))訪問所有參數(shù)
5)return語句用于返回表達(dá)式的值。
6)yield語句扔出一個(gè)表達(dá)式,并且中斷函數(shù)執(zhí)行直到下一次調(diào)用next。
一般的函數(shù)都是以下格式:
function myFunction(params){
//執(zhí)行的語句
}
函數(shù)表達(dá)式:
var myFunction=function(params){
//執(zhí)行的語句
}
var myFunction = function(){
//執(zhí)行的語句
}
myFunction();//調(diào)用函數(shù)
匿名函數(shù),它常作為參數(shù)在其他函數(shù)間傳遞:
window.addEventListener('load',function(){
//執(zhí)行的語句
},false);
對(duì)象
JavaScript的一個(gè)重要功能就是面向?qū)ο蟮墓δ埽ㄟ^基于對(duì)象的程序設(shè)計(jì),可以用更直觀、模塊化和可重復(fù)使用的方式進(jìn)行程序開發(fā)。
一組包含數(shù)據(jù)的屬性和對(duì)屬性中包含數(shù)據(jù)進(jìn)行操作的方法,稱為對(duì)象。比如要設(shè)定網(wǎng)頁的背景顏色,所針對(duì)的對(duì)象就是document,所用的屬性名是bgcolor,如document.bgcolor="blue",就是表示使背景的顏色為藍(lán)色。
事件
用戶與網(wǎng)頁交互時(shí)產(chǎn)生的操作,稱為事件。事件可以由用戶引發(fā),也可能是頁面發(fā)生改變,甚至還有你看不見的事件(如Ajax的交互進(jìn)度改變)。絕大部分事件都由用戶的動(dòng)作所引發(fā),如:用戶按鼠標(biāo)的按鍵,就產(chǎn)生click事件,若鼠標(biāo)的指針在鏈接上移動(dòng),就產(chǎn)生mouseover事件等等。在JavaScript中,事件往往與事件處理程序配套使用。
而對(duì)事件的處理,W3C的方法是用addEventListener()函數(shù),它有三個(gè)參數(shù):事件,引發(fā)的函數(shù),是否使用事件捕捉。為了安全性,建議將第三個(gè)參數(shù)始終設(shè)置為false
傳統(tǒng)的方法就是定義元素的on…事件,它就是W3C的方法中的事件參數(shù)前加一個(gè)“on”。而IE的事件模型使用attachEvent和dettachEvent對(duì)事件進(jìn)行綁定和刪除。JavaScript中事件還分捕獲和冒泡兩個(gè)階段,但是傳統(tǒng)綁定只支持冒泡事件。
變量
1、常用類型
Object:對(duì)象
Array:數(shù)組
Number:數(shù)
Boolean:布爾值,只有true和false兩個(gè)值,是所有類型中占用內(nèi)存最少的
null:一個(gè)空值,唯一的值是null,表空引用
undefined:沒有定義或賦值的變量
2、命名形式
一般形式是:
var 變量名表;
其中,var是javascript的保留字,表面接下來是變量說明,變量名表是用戶自定義標(biāo)識(shí)符,變量之間用逗號(hào)分開。和C++等程序不同,在javascript中,變量說明不需要給出變量的數(shù)據(jù)類型。此外,變量也可以不說明而直接使用。
3、作用域
變量的作用域由聲明變量的位置決定,決定哪些腳本命令可訪問該變量。在函數(shù)外部聲明的變量稱為全局變量,其值能被所在HTML文件中的任何腳本命令訪問和修改。在函數(shù)內(nèi)部聲明的變量稱為局部變量。只有當(dāng)函數(shù)被執(zhí)行時(shí),變量被分配臨時(shí)空間,函數(shù)結(jié)束后,變量所占據(jù)的空間被釋放。局部變量只能被函數(shù)內(nèi)部的語句訪問,只對(duì)該函數(shù)是可見的,而在函數(shù)外部是不可見的。
運(yùn)算符
javascript提供了豐富的運(yùn)算功能,包括算術(shù)運(yùn)算、關(guān)系運(yùn)算、邏輯運(yùn)算和連接運(yùn)算。
1.算術(shù)運(yùn)算符
javascript中的算術(shù)運(yùn)算符有單目運(yùn)算符和雙目運(yùn)算符。雙目運(yùn)算符包括:+(加)、-(減)、*(乘)、/(除)、%(取模)、|(按位或)、(按位與)、(左移)、(右移)等。單目運(yùn)算符有:-(取反)、~(取補(bǔ))、++(遞加1)--(遞減1)等。
2.關(guān)系運(yùn)算符
關(guān)系運(yùn)算符又稱比較運(yùn)算,運(yùn)算符包括:(小于)、=(小于等于)、(大于)、=(大于等于)、==(等于)和!=(不等于)以及 ===) 和 !==。
關(guān)系運(yùn)算的運(yùn)算結(jié)果為布爾值,如果條件成立,則結(jié)果為true,否則為false。
3.邏輯運(yùn)算符
邏輯運(yùn)算符有:(邏輯與)、||(邏輯或)、!(取反,邏輯非)、^(邏輯異或)。
4.字符串連接運(yùn)算符
連接運(yùn)算用于字符串操作,運(yùn)算符為+(用于強(qiáng)制連接),將兩個(gè)或多個(gè)字符串連結(jié)為一個(gè)字符串。
5.三目操作符?
三目操作符“?:”格式為:
操作數(shù)?表式1:表達(dá)式2
三目操作符“?:”構(gòu)成的表達(dá)式,其邏輯功能為:若操作數(shù)的結(jié)果為true,則表述式的結(jié)果為表達(dá)式1,否則為表達(dá)式2。例如max=(ab)?a:b;該語句的功能就是將a,b中的較大的數(shù)賦給max。
相關(guān)規(guī)則
在JavaScript中,“==="是全同運(yùn)算符,只有當(dāng)值相等,數(shù)據(jù)類型也相等時(shí)才成立。
等同運(yùn)算符“=="的比較規(guī)則:
當(dāng)兩個(gè)運(yùn)算數(shù)的類型不同時(shí):將他們轉(zhuǎn)換成相同的類型。
1)一個(gè)數(shù)字與一個(gè)字符串,字符串轉(zhuǎn)換成數(shù)字之后,進(jìn)行比較。
2)true轉(zhuǎn)換為1、false轉(zhuǎn)換為0,進(jìn)行比較。
3)一個(gè)對(duì)象、數(shù)組、函數(shù)與 一個(gè)數(shù)字或字符串,對(duì)象、數(shù)組、函數(shù)轉(zhuǎn)換為原始類型的值,然后進(jìn)行比較。(先使用valueOf,如果不行就使用toString)
4)其他類型的組合不相等。
JavaScript想兩個(gè)運(yùn)算數(shù)類型相同,或轉(zhuǎn)換成相同類型后:
1)2個(gè)字符串:同一位置上的字符相等,2個(gè)字符串就相同。
2)2個(gè)數(shù)字:2個(gè)數(shù)字相同,就相同。如果一個(gè)是NaN,或兩個(gè)都是NaN,則不相同。
3)2個(gè)都是true,或者2個(gè)都是false,則相同。
4)2個(gè)引用的是同一個(gè)對(duì)象、函數(shù)、數(shù)組,則他們相等,如果引用的不是同一個(gè)對(duì)象、函數(shù)、數(shù)組,則不相同,即使這2個(gè)對(duì)象、函數(shù)、數(shù)組可以轉(zhuǎn)換成完全相等的原始值。
5)2個(gè)null,或者2個(gè)都是未定義的,那么他們相等。
而“===”是全同運(yùn)算符,全同運(yùn)算符遵循等同運(yùn)算符的比較規(guī)則,但是它不對(duì)運(yùn)算數(shù)進(jìn)行類型轉(zhuǎn)換,當(dāng)兩個(gè)運(yùn)算數(shù)的類型不同時(shí),返回false;只有當(dāng)兩個(gè)運(yùn)算數(shù)的類型相同的時(shí)候,才遵循等同運(yùn)算符的比較規(guī)則進(jìn)行比較。
例如:null==undefined 會(huì)返回真, 但是null===undefined 就會(huì)返回假!
表達(dá)式
表達(dá)式是指將常量、變量、函數(shù)、運(yùn)算符和括號(hào)連接而成的式子。根據(jù)運(yùn)算結(jié)果的不同,表達(dá)式可分為算術(shù)表達(dá)式、字符表達(dá)式、和邏輯表達(dá)式。
腳本語言
不同于服務(wù)器端腳本語言,例如PHP與ASP,JavaScript是客戶端腳本語言,也就是說JavaScript是在用戶的瀏覽器上運(yùn)行,不需要服務(wù)器的支持而可以獨(dú)立運(yùn)行。所以在早期程序員比較青睞于JavaScript以減少對(duì)服務(wù)器的負(fù)擔(dān),而與此同時(shí)也帶來另一個(gè)問題:安全性。而隨著服務(wù)器的強(qiáng)壯,雖然程序員更喜歡運(yùn)行于服務(wù)端的腳本以保證安全,但JavaScript仍然以其跨平臺(tái)、容易上手等優(yōu)勢(shì)大行其道。
JavaScript是一種腳本語言,其源代碼在發(fā)往客戶端運(yùn)行之前不需經(jīng)過編譯,而是將文本格式的字符代碼發(fā)送給瀏覽器由瀏覽器解釋運(yùn)行。解釋語言的弱點(diǎn)是安全性較差,而且在JavaScript中,如果一條運(yùn)行不了,那么下面的語言也無法運(yùn)行。而且由于每次重新加載都會(huì)重新解譯,加載后,有些代碼會(huì)延遲至運(yùn)行時(shí)才解譯,甚至?xí)啻谓庾g,所以速度較慢。
與其相對(duì)應(yīng)的是編譯語言,例如Java。Java的源代碼在傳遞到客戶端運(yùn)行之前,必須經(jīng)過編譯,因而客戶端上必須具有相應(yīng)平臺(tái)上的仿真器或解釋器,它可以通過編譯器或解釋器實(shí)現(xiàn)獨(dú)立于某個(gè)特定的平臺(tái)編譯代碼的束縛。但是它必須在服務(wù)器端進(jìn)行編譯,這樣就拖延了時(shí)間。但因?yàn)橐呀?jīng)封裝,所以能保證安全性。
Javascript庫
庫,指得是可以方便應(yīng)用到現(xiàn)有開發(fā)體系中的、現(xiàn)成的代碼資源。庫不僅為大部分日常的DOM腳本編程工作提供了快捷的解決方案,而且也提供了許多獨(dú)特的工具。雖然庫使用起來很方便,但它們也并非能解決你所有的問題。在使用庫之前,一定要保證真正理解javascript的DOM原理。
這些庫一般是一個(gè)(或多個(gè))js(Javascript的縮寫)文件,只要把他們導(dǎo)入你的網(wǎng)頁就能使用了。
常用的庫有:
jQuery:javascript庫中的新成員,提供css和xpath選擇符查找元素、ajax、動(dòng)畫效果等
JSer: 國人開發(fā)的一款全功能的開源腳本框架. 借助JSer,可以便捷的操作DOM、CSS樣式訪問、屬性讀寫、事件綁定、行為切換、動(dòng)態(tài)載入、數(shù)據(jù)緩存、URL與AJAX等眾多功能。
dojo:一個(gè)巨大的庫,包括的東西很多,dijit和dojox是dojo的擴(kuò)展,幾乎你想要的各種javascript程序都包括了。
prototype:一個(gè)非常流行的庫,使用了原型鏈向javascript中添加了很多不錯(cuò)的函數(shù)
YUI:(YahooYUI庫)yahoo!用戶界面,非常實(shí)用,提供各種解決方案。
ExtJs:組件非常豐富,皮膚也很漂亮,動(dòng)畫效果也豐富。
正則表達(dá)式
'/^'表示匹配輸入字符串的開始位置。
“+[a-zA-Z0-9\-\_]{2,4}$/”表示匹配前面的子表達(dá)式
2
到4
次
含有第一字符為字符a到z
數(shù)字0到9
符號(hào)
“-”
和“
_”
,并且這個(gè)匹配在字符串的最后位置
。
我來逐行代碼給你分析吧,至于轉(zhuǎn)成易語言的話就無能為力了。
因?yàn)楸救瞬粫?huì)易語言,所以你再找個(gè)會(huì)易語言的人根據(jù)我的翻譯在寫出易語言的代碼來吧。
/*
*這一行是定義一個(gè)函數(shù),函數(shù)名稱是xor_str
*該函數(shù)接受兩個(gè)參數(shù),第一個(gè)參數(shù)名稱是cipherurl,第二個(gè)是cipherkey
*由于js是弱類型語言,因此沒有參數(shù)類型的限制。
*但是根據(jù)代碼的意思可以得到這兩個(gè)參數(shù)的類型都是字符串類型
*因此,在易語言下你可先定義一個(gè)方法,該方法接受兩個(gè)字符串類型的參數(shù)
*/
var xor_str = function(cipherurl,cipherkey)
{
/*
*定義兩個(gè)局部變量
*第一個(gè)變量名為i,類型是整數(shù)類型,初始值為0
*第二個(gè)變量名為url,類型是字符串類型,初始值為""
*/
var i = 0, url = '',
/*
*定義了一個(gè)全局變量keylen,初始值為第二個(gè)參數(shù)的長度
*因?yàn)榈诙€(gè)參數(shù)為字符串類型,所以這個(gè)變量的初始值就是這個(gè)字符串的長度
*/
keylen = cipherkey.length,
/*
*這里又定義了一個(gè)全局變量,變量名為urllen,初始值為第一個(gè)參數(shù)的長度
*因?yàn)榈谝粋€(gè)參數(shù)為字符串類型,所以這個(gè)變量的初始值就是這個(gè)字符串的長度
*/
urllen = cipherurl.length;
/*
*開始循環(huán),循環(huán)條件為變量i小于變量urllen,每循環(huán)一次i的值加1
*/
for(;i urllen;i++){
/*
*定義一個(gè)變量ch
*cipherurl.charCodeAt(i) 的意思是取得cipherurl變量?jī)?nèi)第i個(gè)字符的編碼
*cipherkey.charCodeAt(i%keylen)的意思是取得第(i除以keylen的余數(shù))個(gè)字符的編碼
*cipherurl.charCodeAt(i) ^ cipherkey.charCodeAt(i%keylen)的意思是
*把第一個(gè)編碼值和第二個(gè)編碼值按二進(jìn)制位進(jìn)行異或運(yùn)算
*即對(duì)兩個(gè)數(shù)值的二進(jìn)制寫法進(jìn)行比較
*只有當(dāng)相同位置上的數(shù)字只有一個(gè)1時(shí),才返回1,
*有兩個(gè)1或者都是0則返回0,
*然后轉(zhuǎn)換成十進(jìn)制數(shù)值
*如:10001(二進(jìn)制) ^ 01111(二進(jìn)制)得到的二進(jìn)制值為11110
*最終轉(zhuǎn)成十進(jìn)制是30
*/
var ch = cipherurl.charCodeAt(i) ^ cipherkey.charCodeAt(i%keylen);
/*
*String.fromCharCode(ch);意思是取得ch編碼所在的字符
*url += String.fromCharCode(ch);意思是吧ch對(duì)應(yīng)的字符累加到url變量上
*/
url += String.fromCharCode(ch);
} //結(jié)束循環(huán)
//返回url的值
return url;
};
我想我應(yīng)該說的夠清楚了,如果還幫不了你的話我沒辦法了。
有回答正則的,那確實(shí)也是正則元字符一種,正則雖然在不同語言中使用不同,不過那個(gè)符號(hào)在正則里面代表的意思都一樣,和語言扯不上關(guān)系。
^為異或 就好比 | 和 在邏輯運(yùn)算符里理解為“或者”和“并且” 但是他們也可以充當(dāng)二進(jìn)制算法,比如 6 二進(jìn)制為110 , 8二進(jìn)制為 1000
那么如下關(guān)系
0110 三位,不夠前面加0
1000
計(jì)算機(jī)中只有二進(jìn)制0和1 ,你可以理解0就是true,1就是false,然后通過邏輯運(yùn)算的概念執(zhí)行得到就是新的結(jié)果,異或的算法為相同輸出0,不同輸出1,
意思是當(dāng)鼠標(biāo)指向控件時(shí)該控件獲得焦點(diǎn),而獲得焦點(diǎn)時(shí)使控件中的文本被選中。
===表示類型什么的全部相等,!==表示要全部不想等包括類型或者的意思
!!一般用來將后面的表達(dá)式轉(zhuǎn)換為布爾型的數(shù)據(jù)(boolean),因?yàn)閖avascript是弱類型的語言(變量沒有固定的數(shù)據(jù)類型)所以有時(shí)需要強(qiáng)制轉(zhuǎn)換為相應(yīng)的類型
類似的如: a=parseInt("1234") a="1234"+0 //轉(zhuǎn)換為數(shù)字 b=1234+"" //轉(zhuǎn)換為字符串 c=someObject.toString() //將對(duì)象轉(zhuǎn)換為字符串 其中第1種、第4種為顯式轉(zhuǎn)換,2、3為隱式轉(zhuǎn)換 布爾型的轉(zhuǎn)換,javascript約定和c類似,規(guī)則為 ·false、undefinded、null、0、"" 為 false ·true、1、"somestring"、[Object] 為 true
"0x" 指明是十六進(jìn)制("hex") ,^ 是按位異或, 是按位與, | 是按位或,這些都是位運(yùn)算符,可以使用windows中的計(jì)算器來計(jì)算,把計(jì)算器設(shè)置成“科學(xué)型”,使用“十六進(jìn)制”輸入fffffff,“Xor”是^,“And”是,“Or”是|,結(jié)果是103,也可以寫成一個(gè)htm文件用IE看一下結(jié)果
onmouseover 當(dāng)用戶將鼠標(biāo)指針移動(dòng)到對(duì)象內(nèi)時(shí)觸發(fā),onfocus 當(dāng)對(duì)象獲得焦點(diǎn)時(shí)觸發(fā),this ?指當(dāng)前對(duì)象(標(biāo)簽內(nèi)) ,focus() 返回指定的控件,select() 返回指定的控件(全選內(nèi)容,如文本框內(nèi)的內(nèi)容)
分號(hào)可用也可不用
onmouseover="this.focus()" ?或 onmouseover="this.focus();" ? ?結(jié)果是一樣,onfocus="this.select();" 或 onfocus="select();" ? 結(jié)果是一樣的
分享名稱:javascript異或,js 異或運(yùn)算符
網(wǎng)站URL:http://chinadenli.net/article26/dsihpcg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、標(biāo)簽優(yōu)化、外貿(mào)建站、關(guān)鍵詞優(yōu)化、用戶體驗(yàn)、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)