avascript是一門弱類型語言,意思就是語言中的數據類型,很輕易就能被改變
比如定義一個變量值為數字,然后重新給他賦值為字符串,類型就由數字類型轉為了字符串類型。
類型的轉換,可以有很多種方法,例如在js中常用的parseInt、toString、等方法,這些方法都是強制將某個類型轉為指定的類型。
除了這些方法,還有一些特殊應用場景,會將類型悄悄的進行轉換,如下幾種情況:
如果一個數字跟另一個其他類型的數據進行數學運算時,另一個數據會被轉為數字類型進行運算,例:
var a = 1;
var b = true;
var c = a + b;
console.log(c); // 2 - 此時的布爾類型true被轉為了數字1,進行了數學加法運算
var a = 3;
var b = undefined;
var c = a + b;
console.log(c); // NaN - 此時的b被轉為了數字類型進行了數學運算
注意:加法比較特殊,因為符號+,除了可以進行數學加法以外,還可以進行字符串的拼接。例:
var a = 2;
var b = [1,2,3]
var c = a / b;
console.log(c); // NaN - 此時的b被轉為了數字類型
?
var a = 2;
var b = [1,2,3]
var c = a + b;
console.log(c); // 21,2,3 - 此時的a和b不再是加法運算,而是進行了拼接
當+符號左右兩邊有一個是字符串的時候,另一個也會轉為字符串進行拼接,例:
var a = 2;
var b = '3';
var c = a + b;
console.log(c); // 23 - 此時的a被轉為了字符串,進行了拼接
當比較運算符(除相等比較和全等比較)左右兩邊有一個是數字的時候,另一個也會轉為數字進行比較大小,例:
var a = 2;
var b = '10';
console.log(a>b) // false - 說明b被轉為數字10進行了大小比較
所有被放在if分支語句的小括號中的代碼會被轉為布爾類型,例:
var a = 2;
if(a){
console.log('a變量是true'); // a變量是true - 說明變量a的2被轉為了布爾值true
}else{
console.log('a變量是false');
}
?
var b;
if(b){
console.log('b變量是true');
}else{
console.log('b變量是false'); // b變量是false - 說明b變量undefined被轉為了布爾值false
}
我們知道,new 一個構造函數會得到一個對象,但是new Date()之后,輸出的卻是一個字符串,例:
var d = new Date();
console.log(d); // Mon Mar 15 2021 17:50:25 GMT+0800 (中國標準時間)
// 這說明,new出來的對象d,在輸出的時候被悄悄的轉換成了字符串輸出了
當在控制臺輸出一個數組或對象的時候,是本省的類型顯示,例:
var arr = [1,2,3,4];
var obj = {name:"張三",age:12}
console.log(arr);
console.log(obj);
輸出效果如下圖:
但是如果將數組或對象在文本中輸出的話,數組和對象會默認調用自己原型中的toString方法,以字符串形式顯示在文本中,例:
var arr = [1,2,3,4];
var obj = {name:"張三",age:12}
document.write(arr)
document.write(obj)
文本中顯示如下:
數組和對象其實已經調用了他們原型上的toString方法,被轉為了字符串,例:
var arr = [1,2,3,4];
var obj = {name:"張三",age:12}
console.log(arr.toString());
console.log(obj.toString());
控制臺顯示如下圖:
隱形轉換在多處出現,我們在編程的時候,需要謹慎小心,熟悉后可以對之進行利用,例如判斷一個數據或對象中的值是否存在時,可以利用分支語句的條件中的隱形轉換來搞定。
<form></form>定義表單的開始位置和結束位置,表單提交時的內容就是<form>表單中的內容
<form action="服務器端地址(接受表單內容的地址)" name="表單名稱" method="post|get">...</form>
表單名稱
傳送數據的方式,分為post和get兩種方式:
表單數據的處理程序的URL地址,如果為空則使用當前文檔的URL地址,如果表單中不需要使用action屬性也要指定其屬性為”no“。
設置表單的資料的編碼方式。屬性值:
和超鏈接的屬于類似,用來指定目標窗口。
input 標記沒有結束標記。
<input type="" name="" value="" size="" maxlength="">
定義控件的名稱
初始化值,打開瀏覽器時,文本框中的內容
設置控件的長度
輸入框中最大允許輸入的字符數
使用 textarea 標記可以實現一個能夠輸入多行文本的區域。
rows屬性和cols屬性分別用來指定,顯示的行數和列數,單位是字符個數;value指定傳送到服務器上面的值。
<textarea name="name" rows="value" cols="value" value="value">... ... </textarea>
菜單下拉列表域,生成一個下拉列表。
作用:
option 標記用來指定列表中的一個選項,需要放在 select 之間。
值:
<select name="" size="value" multiple> <option value="value1" selected>選項1</option> <option value="value2">選項2</option> <option value="value3">選項3</option> ... ... ...</select>
用于綁定一個表單元素, 當點擊label標簽的時候, 被綁定的表單元素就會獲得輸入焦點
<label for="male">Male</label><input type="radio" name="sex" id="male">
<form name="form" method="post" action="no" enctype="multipart/form-data"> <label for="male">賬號:</label><input type="text" name="username" value="admin" id="male"><br> 密碼:<input type="password" name="password" size="50" maxlength="6"><br> 性別:<input type="radio" name="sex" value="男"> 男 <input type="radio" name="sex" value="女" checked="checked"> 女<br> 興趣:<input type="checkbox" name="interest" value="籃球">籃球 <input type="checkbox" name="interest" value="足球" checked="checked">足球 <input type="checkbox" name="interest" value="羽毛球" checked="checked">羽毛球 <input type="hidden" name="hidden"><br> 頭像:<input type="file" name="file"><br> 簡介: <textarea rows="10" cols="30"> </textarea><br> 城市: <select name="city" multiple> <option value="beijing">北京</option> <option value="shanghai" selected>上海</option> <option value="nanjing">南京</option> <option value="guangdong">廣東</option> </select> <br> <input type="submit" value="注冊"> <input type="reset"> <input type="button" value="普通按鈕"></form>
前幾篇中,我們已經學習了如何在Python中表示字符串、數值、邏輯值等字面值數據。也學習了如何使用變量引用這些數據。
本文開始學習如何操作這些數據。操作數據最常用的方式是使用運算符。運算符即對數據進行運算的符號,我們在小學時學過的加減乘除就是最簡單的運算符。
運算符的語法規則包括運算符的功能和優先級兩個要點。
Python運算符功能根據操作數的類型可以分為賦值運算符、算術運算符、邏輯運算符、比較運算符、成員運算符、位運算符、身份運算符幾類。
在編程中,最常用的運算符是賦值運算符,賦值運算符用一個等于號表示,其使用基本格式如下:
變量 = 表達式
其功能是將表達式的值賦予變量。
其中變量一般是字面值和簡單數據類型引用變量,也可以是對象的引用變量,還可以是對象的可寫屬性。關于變量的概念參見Python教程:第8篇 變量。
其中表達式是具有返回值的字面量、常量、變量、函數、語句以及運算符等的組合,一個單獨的字面量、變量、常量也是表達式,稱為簡單表達式,也稱基本表達式。使用運算符連接的表達式稱為復雜表達式。
下面是一些簡單的賦值示例,它們分別將字符串、數值、邏輯值賦予變量a,并在賦值后輸出a的值:
注意,Python的賦值運算符沒有返回值。這點與C語言不同。Python的函數參數可以使用賦值語句,并不是因為這個原因。而是用于區分哪個參數,參數的順序可以錯亂的。
如果將賦值表達式作為返回值賦予另一個變量,會產生語法錯誤:
也不能將其作為print函數的參數打印輸出:
另一個需要注意的是,在Python中,變量的賦值是將對象的引用(指對象在內存中的地址,id函數可以返回它)傳給變量,而不是傳遞值,比如下面的示例,a和b是兩個變量,b最初的值由a賦值得到,但它們都指向同一個對象(這里是下面的編程名言字符串),b重新賦值之后,其指向改變了,內存地址不再與a相同。
從 Python 2.0 開始, 等號可以和另一個運算符(一般是算術運算符)組合在一起, 將計算結果重新賦值給左邊的變量。這被稱為增量賦值。 類似下面這樣的語句:
變量 = 變量 + 表達式
現在可以寫成:
變量 += 表達式
增量賦值通過使用賦值運算符,將數學運算隱藏在賦值過程當中。你可能在 C、C++、Java、JavaScript代碼中見過以下增量運算符:
+= -= *= /= %= **=
<<= >>= &= ^= |=
增量賦值相對普通賦值的最主要的好處是可以帶來運行效率上的提升:變量僅被修改一次,而普通賦值會被修改兩次。
以下是增量賦值的常見應用示例:
賦值運算符一般與算術運算符(加減乘除、乘方、整除等)組成增量賦值,也可與位運算符組合:
但不支持比較運算符(比較大小的,比如大于等于>=)等運算符,下面是示例:
由于+、*也可用于字符串、列表等操作,所以增量賦值也可適用于字符串等數據的賦值:
從字符串的增量賦值結果來看,變量原來的值位于增量賦值后的前面,這一點也是需要注意的。
也可以使用下面的格式為多個變量賦予相同的值:
變量 = 變量 = 表達式
其中“變量 =”可以無限重復添加,下面是個示例(a、b、c的值都為表達式的返回值):
要注意的是,使用連續賦值時不能使用增量賦值,下面第2行第2個賦值號產生了語法錯誤:
元組是Python中一種用小括號包圍的數據列表表示的基本數據類型(以后會介紹),但在賦值操作中,可以省略兩端的小括號,所以你以后可能會常看到類似于以下形式的代碼,它可以交換兩個變量的值:
變量1,變量2 = 變量2,變量1
它實際上是下面元組賦值的縮寫:
(變量1,變量2) = (變量2,變量1)
下面是個應用示例:
這是Python支持的特殊的交換兩個變量的值的方式,在許多其他編程語言中,你需要定義一個中間變量,首先將第1個變量賦值給中間變量,然后將第2個變量賦值給第1個變量,最后將中間變量賦值給第2個變量,才能實現交換兩個變量值的目的,下面是Python(也是其他語言都支持的)這種方式的應用示例:
關于運算符的內容還有很多,歡迎各位讀者多多評論互動,也可關注我,下篇教程我將盡快推出。
注:從2022年4月28日發布的本篇教程開始,代碼截圖加上了使用了隨機生成的背景圖。寬度統一為970像素,這是在1080px寬度手機上顯示的原始寬度,以提高各位讀者的閱讀觀感。語法高亮風格采用 Python3.10.4 的 IDLE 顯示的風格,由于水平有限,注釋高亮的功能還沒有實現。
在Python中,數據如何表示可以參閱:
「Python教程」第6篇 Python基本語法之字符串
「Python教程」第7篇 Python基本語法之數值與邏輯值
*請認真填寫需求信息,我們會在24小時內與您取得聯系。