整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          useState 的傳參方式,有什么區(qū)別?

          eState()的傳參有兩種方式:純數(shù)據(jù)和回調(diào)函數(shù)。這兩者在初始化時,除了傳入方式不同,沒啥區(qū)別。但在調(diào)用時,不同的調(diào)用方式和所在環(huán)境,輸出的結(jié)果也是不一樣的。

          如:

          const App = () => {
            const [count, setCount] = useState(0);
          
            const handleParamClick = () => {
              setCount(count + 1);
              setCount(count + 1);
              setCount(count + 1);
            };
          
            const handleCbClick = () => {
              setCount(count => count + 1);
              setCount(count => count + 1);
              setCount(count => count + 1);
            };
          };

          上面的兩種傳入方式,最后得到的 count 結(jié)果是不一樣的。為什么呢?因為在以數(shù)據(jù)的格式傳參時,這 3 個使用的是同一個 count 變量,數(shù)值是一樣的。相當(dāng)于setCount(0 + 1),調(diào)用了 3 次;但以回調(diào)函數(shù)的傳參方式,React 則一般地會直接該回調(diào)函數(shù),然后得到最新結(jié)果并存儲到 React 內(nèi)部,下次使用時就是最新的了。注意:這個最新值是保存在 React 內(nèi)部的,外部的 count 并不會馬上更新,只有在下次渲染后才會更新。

          還有,在定時器中,兩者得到的結(jié)果也是不一樣的:

          HTML頁面中嵌入其他頁面的方法

          在自己的頁面中嵌入其他頁面是一個非常重要的操作,既能豐富自己的頁面樣式又能增強頁面的信息量。

          舉個例子,如果打算在自己的頁面中插入一個視頻網(wǎng)站的視頻該怎么做呢?

          假如我現(xiàn)在自己的頁面中嵌入這個視頻,

          我只需要在視頻下側(cè)找到"分享"。

          點擊之后出現(xiàn)這樣的對話框,如圖:

          通過在我們的頁面中粘貼這段通用代碼就可以顯示這個視頻了。

          代碼如下:

          <iframe height=498 width=510 src='http://player.youku.com/embed/XNDQ5Mjg1MTU1Mg==' frameborder=0 'allowfullscreen'></iframe>

          下面就寫到我們的頁面中試試吧。

          首先復(fù)制"第一個網(wǎng)頁.html"文件,改名為"在頁面中嵌入頁面.html"保存,然后用記事本打開,修改<head></head>標(biāo)簽中的<title>第一個頁面</title>編輯為"在頁面中嵌入頁面"即可,完整代碼如下:

          <!DOCTYPE HTML>
            <html>
            <head> 
            <title>在頁面中嵌入頁面</title>
            </head> 
            <body>
            <iframe height=498 width=510 src='http://player.youku.com/embed/XNDQ5Mjg1MTU1Mg==' frameborder=0 'allowfullscreen'></iframe>
            </body>
            </html>

          頁面效果如下:

          怎么樣,是不是很神奇!

          下面我們來分析一下這段代碼的含義。

          首先要引入一個新標(biāo)簽<iframe>,HTML的使用手冊中翻譯為"框架",說實話,這么翻譯初學(xué)者是不知所云的。這個框架元素的主要作用就是在自己的頁面中嵌入其他頁面。

          在<iframe>標(biāo)簽中先指定路徑屬性即src。這里使用的是單引號,實際上只要是半角符號,單引號和雙引號都可以的。

          然后設(shè)置長寬屬性,即width和height,大家可以嘗試改變數(shù)據(jù)看看。

          frameborder可以為iframe的窗口指定一個邊框,大家可以嘗試把0改成1看看。大家注意哈,這里輸入30和輸入1是一樣的,因為這個屬性不是定義邊框的寬度,而是定義是否顯示邊框!在編程中叫做布爾值,0代表沒有邊框,1代表有邊框!和我們點燈的開關(guān)一樣!

          如圖:多了個邊框出來。

          最后'allowfullscreen'這個描述非常的奇葩,把它刪掉沒有任何影響。不曉得是干什么的,主要是也不符合html的語法(也可能是我沒見識)。如果有詳細(xì)了解的小伙伴歡迎留言指教,感激不盡。

          下面我們嘗試修改一下src屬性,給它一個別的路徑看看。例如:

          <!DOCTYPE HTML>
            <html>
            <head> 
            <title>在頁面中嵌入頁面</title>
            </head> 
            <body>
            <iframe height=498 width=510 src='https://www.toutiao.com/i6790673377188119052/'>
            </iframe>
            </body>
            </html>

          需要注意的是,修改了src并保存文件之后要把原頁面關(guān)閉然后重新打開才可以正常顯示!

          效果如下:

          在瀏覽網(wǎng)頁時我們還經(jīng)常遇到這樣的情況,就是有一個獨立窗口顯示嵌套的頁面,上面有個標(biāo)題,一點擊就會跳到那個嵌入的頁面上,這個其實很簡答,使用一個<a></a>元素即可辦到,示例代碼如下:

          <a href="https://www.toutiao.com/i6790673377188119052/">HTML中的塊級元素與內(nèi)聯(lián)元素——零基礎(chǔ)自學(xué)網(wǎng)頁制作</a>
          <iframe height=498 width=510 src='https://www.toutiao.com/i6790673377188119052/'></iframe>

          頁面示例如下:

          框架元素并沒有換行,所有我們可以推測出<iframe>標(biāo)簽實際上是個內(nèi)聯(lián)元素,如何讓它換行呢?

          為<iframe>的style屬性中寫入display:block即可。這句代碼的意思是按照塊元素來顯示<iframe>內(nèi)容。

          示例代碼如下:

          <iframe height=498 width=510 style = "display:block;"src='https://www.toutiao.com/i6790673377188119052/'></iframe>

          頁面效果如下:

          是不是很有意思。

          下面我們來介紹一個更有趣的玩法。如圖所示:

          這個怎么做呢?

          這就要介紹<iframe>標(biāo)簽中的另一個屬性:name(名字)

          示例代碼如下:name="iframe"

          <iframe name = "iframe" height=498 width=510style = "display:block;"src='https://www.toutiao.com/i6790673377188119052/'allowfullscreen'></iframe>

          這里講個題外話,如果大家了解中國古代的"請神術(shù)"的話就會知道這樣一個有趣的傳說,就是如果我們能叫出鬼神的名字就可以驅(qū)使它。

          編程也是這樣,我們給函數(shù)或變量一個名字后,就可以隨時隨地的驅(qū)使它。

          現(xiàn)在我們給<iframe>起了個名字叫做"iframe",當(dāng)然您可以使用其他名字也沒問題,但要使用英文或漢語拼音命名,名字是英語字母組合最好。

          有了名字之后,<a>標(biāo)簽就要驅(qū)使<iframe>標(biāo)簽來顯示自己路徑下的內(nèi)容,如何驅(qū)使呢?

          大家還記得<a>標(biāo)簽中有一個target屬性嗎?只要讓target="iframename"即可!

          也就是target="iframe"。示例代碼如下:大家要注意的是<a>標(biāo)簽也是內(nèi)聯(lián)元素,也需要添加display:block,不然也是排在一列顯示。

          <a style = "display:block;" target="iframe" href="https://www.toutiao.com/i6790673377188119052/">HTML中的塊級元素與內(nèi)聯(lián)元素——零基礎(chǔ)自學(xué)網(wǎng)頁制作</a><!--第一個a鏈接的是頭條文章-->
          <a style = "display:block;" target="iframe" href="https://baike.baidu.com/item/%E6%AD%BC-20/1555348?fromtitle=%E6%AD%BC20&fromid=1838467&fr=aladdin"> 殲20戰(zhàn)斗機百科</a><!--第二個a鏈接的是百度百科-->
          <a style = "display:block;"target="iframe" href="image1.jpg">IT美女</a><!--第三個a鏈接的是本地圖片-->
          <iframe name = "iframe" height=498 width=510style = "display:block;"></iframe>

          只要我們?yōu)椴煌?lt;a>標(biāo)簽賦予target="iframe"的屬性,點擊這些<a>標(biāo)簽就可以在叫做"iframe"的框架元素中顯示自己的頁面。這時我們可以把<iframe>標(biāo)簽中的src屬性刪除掉,保存文件后,關(guān)閉測試網(wǎng)頁,再重新打開,效果如下:

          初始狀態(tài)下,因為框架元素中的src是空的,所以打開后是空白的。如果您覺得單調(diào)可以任意復(fù)制3個<a>中的一個href中的鏈接路徑給<iframe>的src屬性,打開就是相應(yīng)的標(biāo)簽。這個就不演示了,大家自己試試即可。

          點擊第一個鏈接效果如下:

          點擊第二個鏈接如下:

          點擊第三個鏈接如下:

          最后再強調(diào)一下,改完框架的src屬性后需要關(guān)閉頁面后重新打開才可以,刷新的話并不能正確顯示!切記!

          今天的示例代碼如下:

          <!DOCTYPE HTML>
            <html>
            <head> 
            <title>在頁面中嵌入頁面</title>
            </head> 
            <body>
            <a style = "display:block;" target="iframe" href="https://www.toutiao.com/i6790673377188119052/">HTML中的塊級元素與內(nèi)聯(lián)元素——零基礎(chǔ)自學(xué)網(wǎng)頁制作</a>
            <a style = "display:block;" target="iframe" href="https://baike.baidu.com/item/%E6%AD%BC-20/1555348?fromtitle=%E6%AD%BC20&fromid=1838467&fr=aladdin">殲20戰(zhàn)斗機百科</a>
          <a style = "display:block;" target="iframe" href="image1.jpg">IT美女</a>
          <iframe name = "iframe" height=498 width=510 style = "display:block;"></iframe>
          </body>
          </html>

          今天的內(nèi)容結(jié)束了,明天我將會為大家介紹<object>和<embed>這兩個標(biāo)簽,它們可以在頁面中嵌入更多有趣的東西。

          喜歡的小伙伴請關(guān)注我,閱讀中遇到任何問題請給我留言,如有疏漏或錯誤歡迎大家斧正,不勝感激!

          HTML完整學(xué)習(xí)目錄

          HTML序章(學(xué)習(xí)目的、對象、基本概念)——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML是什么?——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          第一個HTML頁面如何寫?——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML頁面中head標(biāo)簽有啥用?——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          初識meta標(biāo)簽與SEO——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML中的元素使用方法1——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML中的元素使用方法2——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML元素中的屬性1——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML元素中的屬性2(路徑詳解)——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          使用HTML添加表格1(基本元素)——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          使用HTML添加表格2(表格頭部與腳部)——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          使用HTML添加表格3(間距與顏色)——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          使用HTML添加表格4(行顏色與表格嵌套)——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          16進制顏色表示與RGB色彩模型——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML中的塊級元素與內(nèi)聯(lián)元素——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          初識HTML中的<div>塊元素——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          在HTML頁面中嵌入其他頁面的方法——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          封閉在家學(xué)網(wǎng)頁制作!為頁面嵌入PDF文件——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML表單元素初識1——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML表單元素初識2——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML表單3(下拉列表、多行文字輸入)——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML表單4(form的action、method屬性)——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML列表制作講解——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          為HTML頁面添加視頻、音頻的方法——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          音視頻格式轉(zhuǎn)換神器與html視頻元素加字幕——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          HTML中使用<a>標(biāo)簽實現(xiàn)文本內(nèi)鏈接——零基礎(chǔ)自學(xué)網(wǎng)頁制作

          礎(chǔ)

          typeof 運算符是 JavaScript 的基礎(chǔ)知識點,盡管它存在一定的局限性(見下文),但在前端js的實際編碼過程中,仍然是使用比較多的類型判斷方式。

          因此,掌握該運算符的特點,對于寫出好的代碼,就會起到很大的幫助作用。

          typeof 返回一個字符串,表示該操作值的數(shù)據(jù)類型,基本語法:

          typeof operand
          typeof(operand)
          

          可能返回的類型字符串有:string, boolean, number, bigint, symbol, undefined, function, object。

          返回類型

          將根據(jù)可能的返回類型,進行以下的分類介紹,對typeof的使用方法一網(wǎng)打盡。

          string 和 boolean

          字符串、布爾值分別返回 string、boolean。包括 String() 和 Boolean()。

          typeof '1' // 'string'
          typeof String(1) // 'string'
          typeof true // 'boolean'
          typeof Boolean() // 'boolean'
          

          number和bigint

          數(shù)字返回 number,包括 Number()、NaN 和 Infinity 等,以及 Math 對象下的各個數(shù)學(xué)常量值。

          BigInt 數(shù)字類型值返回 bigint,包括 BigInt(1)。

          typeof 1 // 'number'
          typeof NaN // 'number'
          typeof Math.PI // 'number'
          typeof 42n // 'bigint'
          typeof BigInt(1) // 'bigint'
          

          symbol

          symbol 值返回 symbol,包括 Symbol()。

          typeof Symbol() // 'symbol'
          typeof Symbol('foo') // 'symbol'
          typeof Symbol.iterator // 'symbol'
          

          undefined

          undefined 本身返回 undefined。

          不存在的,或者定義了但未賦初值的變量,都會返回 undefined。

          還有 document.all 等瀏覽器的非標(biāo)準(zhǔn)特性。

          typeof undefined // 'undefined'
          typeof ttttttt // 'undefined'
          typeof document.all // 'undefined'
          

          function

          函數(shù)返回 function。

          包括使用es6的 class 類聲明的。

          還有各個內(nèi)置對象 String、Number、BigInt、Boolean、RegExp、Error、Object、Date、Array、Function、Symbol 本身。

          以及 Function(),new Function()。

          function func () {}
          typeof func // 'function'
          typeof class cs {} // 'function'
          typeof String // 'function'
          typeof RegExp // 'function'
          typeof new Function() // 'function'
          

          object

          對象、數(shù)組、null、正則表達式,都返回 object。

          包括 Math、jsON 對象本身。

          還有使用 new 操作符的數(shù)據(jù),除了 Function 以外。

          typeof {} // 'object'
          typeof [] // 'object'
          typeof null // 'object'
          typeof /d/ // 'object'
          typeof Math // 'object'
          typeof new Number(1) // 'object'
          

          其他

          關(guān)于其他大部分的 JavaScript關(guān)鍵字,得到的結(jié)果值都是 object 或 function。

          注:多數(shù)小寫字母開頭的是對象 object,多數(shù)大寫字母開頭的都是方法 function。常見的明確知道的方法不算,如 alert,prompt 等方法。

          除此以外,還有各js環(huán)境下具體實現(xiàn)的宿主對象。

          常見問題

          引用錯誤

          在 let 和 const 塊級作用域變量定義之前,使用 typeof 會拋錯 ReferenceError。因為塊級作用域變量,會在頭部形成 暫存死區(qū),直到被初始化,否則會報引用錯誤。

          typeof t
          let t = 1
          // VM327:1 Uncaught ReferenceError: t is not defined
          //    at <anonymous>:1:1

          如果是使用 var 定義變量,不會報錯,返回 undefined 。

          有變量提升,不會形成暫時死區(qū)。

          typeofnull

          對于 typeof null === 'object' ,記住即可,可能的解釋:

          在JavaScript 最初的實現(xiàn)中,JavaScript 中的值是由一個表示類型的標(biāo)簽和實際數(shù)據(jù)值表示的。對象的類型標(biāo)簽是 0。由于null代表的是空指針(大多數(shù)平臺下值為 0x00),因此,null 的類型標(biāo)簽是 0,typeof null 也因此返回 "object"。

          typeof 的局限性

          typeof 的局限性,在于無法精確判斷出 null、數(shù)組、對象、正則 的類型。所以如果要精準(zhǔn)判斷,還需要使用其他技術(shù)手段,或組合判斷。如下,判斷數(shù)組類型:

          Object.prototype.toString.call([]) // '[object Array]'
          
          [] instanceof Array // true
          
          [].constructor === Array // true

          其中,Object.prototype.toString.call 是javascript中用于準(zhǔn)確判斷數(shù)據(jù)類型的通用手段。

          擴展:BigInt類型

          BigInt 來自于 ES11 增加的一種最新的基礎(chǔ)類型,可以用任意精度表示整數(shù)。

          它提供了一種表示大于 2^53 - 1 整數(shù)的方法,能表示任意大的整數(shù)。

          它是通過在整數(shù)末尾附加 n 或調(diào)用構(gòu)造函數(shù) BigInt() 來創(chuàng)建的。IE 不支持。

          10n
          BigInt(99) // 99n

          注意點:

          • BigInt 能使用運算符 +、*、-、**和%。
          • 除 >>> (無符號右移) 之外的 位操作 也可以支持。因為BigInt 都是有符號的。
          • BigInt 不支持單目 (+) 運算符,會報類型錯誤。
          • 不能對 BigInt 使用 Math 對象中的方法。
          • BigInt 不能與 Number數(shù)字 進行混合計算,否則,將拋出 TypeError。
          • 在將 BigInt 轉(zhuǎn)換為 Boolean 時,它的行為類似 Number數(shù)字 。
          • BigInt 變量在轉(zhuǎn)換成 Number 變量時可能會丟失精度。
          • typeof 操作時返回 bigint。
          • 使用 Object、String 等內(nèi)置對象轉(zhuǎn)換時,類似于 Number數(shù)字。
          • BigInt 使用 / 除操作時,帶小數(shù)的運算會被取整。
          • Number 和 BigInt 可以進行比較,非嚴(yán)格相等。
          • JSON.stringify 處理 BigInt 會引發(fā)類型錯誤。


          -


          主站蜘蛛池模板: 国产成人免费一区二区三区| 美女AV一区二区三区| 成人中文字幕一区二区三区| 久久精品一区二区免费看| 无码国产精品一区二区免费3p| 在线观看国产一区| 免费无码VA一区二区三区| 交换国产精品视频一区| 日韩一区在线视频| 99精品高清视频一区二区| 亚洲AV美女一区二区三区| 成人精品一区二区不卡视频| 国产精品免费大片一区二区| 日韩精品一区二区亚洲AV观看| 亚洲AV无码一区二区乱子仑| 免费在线观看一区| 国产福利精品一区二区| 在线观看精品视频一区二区三区| 国产精品小黄鸭一区二区三区| 久久4k岛国高清一区二区| 女女同性一区二区三区四区| 又硬又粗又大一区二区三区视频 | 中文字幕亚洲乱码熟女一区二区 | 五十路熟女人妻一区二区| 国产精品被窝福利一区 | 国产麻豆媒一区一区二区三区| 国产一区二区三区在线观看精品| 亚洲一区二区三区精品视频| 视频精品一区二区三区| 少妇无码一区二区二三区| 国产一区二区三区四| 亚洲香蕉久久一区二区| 亚洲欧洲一区二区三区| 加勒比无码一区二区三区| 国产精品视频一区二区噜噜| 日韩一区二区三区在线观看 | 日本一区二区三区精品视频| 91精品福利一区二区三区野战| 亚洲成av人片一区二区三区 | 国产一区麻豆剧传媒果冻精品| 中文字幕一区二区三区人妻少妇|