1. javascript語言中賦值語句有沒有布爾值比如a=5能不能判斷是true or false
在js中,這相當於一個賦值語句,如果b的值大於0或為true,那麼就把b的值回賦給a,否答在就把c的值賦給a
布爾值,javascript中以下值會被轉換為false
false
undefined
null
0
-0
NaN
""
''
2. JS .readOnly=="readonly"的判斷錯誤
在網頁中有時候需要控制文本輸入框的「輸入狀態」,一些關鍵屬性是不能修改的,這個時候需要將文本輸入框的readonly屬性設置為False,在網頁中可以使用
<input name="txt_name" type="text" readonly="readonly" id="txt_Status" name="txt_name" style="width:150px;" />
但是在JS中則不能食用txt_name.readonly="readonly"來設置該屬性,由於JS是區分大小寫的,所以,在調用該屬性的時候,必須使用txt_name.readOnly=true來設置。
當然,網頁文本框還有一個屬性可以控制它的狀態,disabled,這個屬性也是限制用戶修改文框的內容,只是這個屬性設置為"disabled"後,C#的後台代碼就無法獲得這個控制項的內容了。
3. javascript怎麼判斷是不是布爾值
用typeof試一下,如:var bl=true; console.log(typeof bl);//boolean
4. javascript的邏輯或||和邏輯與&&問題
「&&」運算符可以從三個不同的層次進行理解。
最簡單的第一層理解是,當操作數都是布爾值的時候,「&&」對兩個值執行布爾與(AND)操作,只有在第一個操作數和第二個操作數都是true的時候,它才返回true。如果其中一個操作數是false,它返回false。
「&&」常用來連接兩個關系表達式:
x==0&&y==0//只有在x和y都是0的時候,才返回true
但是「&&」的操作數並不一定是布爾值。對「&&」的第二層理解是,「&&」可以對真值和假值進行布爾與(AND)操作。如果兩個操作數都是真值,那麼返回一個真值;否則,至少一個操作數是假值的話,則返回一個假值。在JavaScript中任何希望使用布爾值的地方,表達式和語句都會將其當做真值或假值來對待,因此實際上「&&」並不總是返回true和false。
例如:
3&&4//返回一個真值4
2&&null//返回一個假值null
undefined&&null//返回一個假值undefined
//假值是false、null、undefined、0、-0、NaN和"",所有其他的值包括所有對象都是真值
我們深入討論對「&&」的第三層(也是最後一層)理解。運算符首先計算左操作數的值,即首先計算「&&」左側的表達式。如果計算結果是假值,那麼整個表達式的結果一定也是假值,因此「&&」這時簡單地返回左操作數的值,而並不會對右操作數進行計算。反過來講,如果左操作數是真值,那麼整個表達式的結果則依賴於右操作數的值。如果右操作數是真值,那麼整個表達式的值一定是真值;如果右操作數是假值,那麼整個表達式的值一定是假值。
因此,當左操作數是真值時,「&&」運算符將計算右操作數的值並將其返回作為整個表達式的計算結果:
varo={x:1};
varp=null;
o&&o.x//=>1:o是真值,因此返回值為o.x
p&&
p.x//=>null:p是假值,因此將其返回,而並不去計算p.x
這對於理解「&&」可能不會去計算右操作數的情況至關重要,在上述示例代碼中,變數p的值是null,而如果計算表達式p.x的話則會拋出一個類型錯誤異常。但是示例代碼使用了「&&」的一種符合語言習慣的用法,因此只有在p為真值(不能是null或者undefined)的情況下才會計算p.x。
「&&」的行為有時稱做「短路」(short circuiting),我們也會經常看到很多代碼利用了這一特性來有條件地執行代碼。
例如,下面兩行JavaScript代碼是完全等價的:
if(a==b)stop();//只有在a==b的時候才調用stop()
(a==b)&&stop();//同上
盡管「&&」可以按照第二層和第三層的理解進行一些復雜表達式運算,但大多數情況下,「&&」僅用來對真值和假值做布爾計算。
「||」運算符對兩個操作數做布爾或(OR)運算。如果其中一個或者兩個操作數是真值,它返回一個真值。如果兩個操作數都是假值,它返回一個假值。
盡管「||」運算符大多數情況下只是做簡單布爾或(OR)運算,和「&&」一樣,它也具有一些更復雜的行為。它會首先計算第一個操作數的值,也就是說會首先計算左側的表達式。如果計算結果為真值,那麼返回這個真值。否則,再計算第二個操作數的值,即計算右側的表達式,並返回這個表達式的計算結果。
這個運算符最常用的方式是用來從一組備選表達式中選出第一個真值表達式:
//如果max_width已經定義了,直接使用它;否則在preferences對象中查找max_width
//如果沒有定義它,則使用一個寫死的常量
varmax=max_width||preferences.max_width||500;
這種慣用法通常用在函數體內,用來給參數提供默認值:
//將o的成員屬性復制到p,並返回
pfunction(o,p){
p=p||{};//如果向參數p沒有傳入任何對象,則使用一個新創建的對象
//函數體內的主邏輯
}