整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          JavaScript中的隱藏數據類型轉換

          avascript是一門弱類型語言,意思就是語言中的數據類型,很輕易就能被改變

          比如定義一個變量值為數字,然后重新給他賦值為字符串,類型就由數字類型轉為了字符串類型。

          類型的轉換,可以有很多種方法,例如在js中常用的parseInttoString、等方法,這些方法都是強制將某個類型轉為指定的類型。

          除了這些方法,還有一些特殊應用場景,會將類型悄悄的進行轉換,如下幾種情況:

          1、數學運算

          如果一個數字跟另一個其他類型的數據進行數學運算時,另一個數據會被轉為數字類型進行運算,例:

          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不再是加法運算,而是進行了拼接
          

          2、字符串拼接

          +符號左右兩邊有一個是字符串的時候,另一個也會轉為字符串進行拼接,例:

          var a = 2;
          var b = '3';
          var c = a + b;
          console.log(c); // 23 - 此時的a被轉為了字符串,進行了拼接
          

          3、比較運算

          當比較運算符(除相等比較和全等比較)左右兩邊有一個是數字的時候,另一個也會轉為數字進行比較大小,例:

          var a = 2;
          var b = '10';
          console.log(a>b) // false - 說明b被轉為數字10進行了大小比較
          

          4、判斷條件


          所有被放在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
          }

          5、date輸出


          我們知道,new 一個構造函數會得到一個對象,但是
          new Date()之后,輸出的卻是一個字符串,例:

          var d = new Date();
          console.log(d); // Mon Mar 15 2021 17:50:25 GMT+0800 (中國標準時間)
          // 這說明,new出來的對象d,在輸出的時候被悄悄的轉換成了字符串輸出了
          

          6、對象數組輸出在頁面


          當在控制臺輸出一個數組或對象的時候,是本省的類型顯示,例:

          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 標簽

          1)作用

          <form></form>定義表單的開始位置和結束位置,表單提交時的內容就是<form>表單中的內容

          2)基本格式

          <form action="服務器端地址(接受表單內容的地址)" name="表單名稱" method="post|get">...</form>

          3)常用屬性

          1.name

          表單名稱

          2.method

          傳送數據的方式,分為post和get兩種方式:

          1. get方式:get方式提交時,會將表單的內容附加在URL地址的后面,所以限制了提交的內容的長度,不超過8192個字符,且不具備保密性。
          2. post方式:post方式提交時,將表單中的數據一并包含在表單主體中,一起傳送到服務器中處理,沒有數據大小限制。
          3.action

          表單數據的處理程序的URL地址,如果為空則使用當前文檔的URL地址,如果表單中不需要使用action屬性也要指定其屬性為”no“。

          4.enctype

          設置表單的資料的編碼方式。屬性值:

          1. application/x-www-form-urlencoded:在發送前編碼所有字符(默認)
          2. multipart/form-data:不對字符編碼。在使用包含文件上傳控件的表單時,必須使用該值。
          3. text/plain:空格轉換為 "+" 加號,但不對特殊字符編碼。
          5.target

          和超鏈接的屬于類似,用來指定目標窗口。

          2.input 標簽

          1)注意

          input 標記沒有結束標記。

          2)基本語法

          <input type="" name="" value="" size="" maxlength="">

          3)屬性

          1.type屬性
          1. text:文本輸入域
          2. password:密碼輸入域
          3. submit:提交按鈕
          4. reset:重置按鈕
          5. button:普通按鈕
          6. radio:單選按鈕,可以使用”checked“屬性來設置默認選中項
          7. checkbox:復選框,可以使用”checked“屬性來設置默認選中項
          8. hidden:隱藏表單域
          9. file:文件域
          2.name屬性

          定義控件的名稱

          3.value屬性

          初始化值,打開瀏覽器時,文本框中的內容

          4.size屬性

          設置控件的長度

          5.maxlength屬性

          輸入框中最大允許輸入的字符數

          3.textarea 標簽

          1)作用

          使用 textarea 標記可以實現一個能夠輸入多行文本的區域。

          2)語法格式

          rows屬性和cols屬性分別用來指定,顯示的行數和列數,單位是字符個數;value指定傳送到服務器上面的值。

          <textarea name="name" rows="value" cols="value" value="value">... ... </textarea>

          4.select 標簽

          1)作用

          菜單下拉列表域,生成一個下拉列表。

          2)option 標簽

          作用:

          option 標記用來指定列表中的一個選項,需要放在 select 之間。

          值:

          1. value:給選項賦值,指定傳送到服務器上面的值。
          2. selected:指定默認的選項。

          3)語法格式

          <select name="" size="value" multiple>    <option value="value1" selected>選項1</option>    <option value="value2">選項2</option>    <option value="value3">選項3</option>    ... ... ...</select>

          4)屬性

          1. multiple屬性:multiple屬性不用賦值,其作用是,表示用可以多選的下來列表,如果沒有這個屬性就只能單選。
          2. size屬性:設置列表的高度。
          3. name屬性:定義這個列表的名稱。

          5.label 標簽

          1)作用

          用于綁定一個表單元素, 當點擊label標簽的時候, 被綁定的表單元素就會獲得輸入焦點

          2)語法
          <label for="male">Male</label><input type="radio" name="sex" id="male">

          6.舉例

          <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基本語法之數值與邏輯值


          主站蜘蛛池模板: 熟妇人妻系列av无码一区二区| 亚洲av无码片区一区二区三区| 国产综合一区二区在线观看| 精品国产一区AV天美传媒| 国产亚洲一区二区三区在线不卡| 激情无码亚洲一区二区三区| 精品无码一区在线观看| 久久久精品人妻一区亚美研究所 | 视频一区二区三区人妻系列| 亚洲电影唐人社一区二区| 亚洲一区二区三区影院| 亚洲一区二区精品视频| 精品人妻一区二区三区四区| 国产免费私拍一区二区三区| 怡红院一区二区在线观看| 亚洲精品国产suv一区88| 精品国产AV一区二区三区| 一区二区三区视频在线| 亚洲AV无码一区二区三区DV| 精品一区二区三区四区| 国产探花在线精品一区二区| 好看的电影网站亚洲一区| 日本不卡一区二区三区视频| 亚洲av无码一区二区三区不卡| 一区二区三区观看| 无码人妻精品一区二区蜜桃百度| 国产日韩精品一区二区在线观看| 无码喷水一区二区浪潮AV| 日韩福利视频一区| 国产精品va一区二区三区| 日本一区午夜爱爱| 中文字幕一精品亚洲无线一区| 国产福利视频一区二区| 亚洲美女视频一区| 怡红院AV一区二区三区| 无码8090精品久久一区| 中文字幕一区日韩在线视频 | 国产av天堂一区二区三区 | 久久久无码精品人妻一区| 在线一区二区观看| 亚洲AV日韩精品一区二区三区|