Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 91原创视频在线,最近中文字幕完整视频高清1,曰本亚洲欧洲色a在线

          整合營(yíng)銷服務(wù)商

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

          免費(fèi)咨詢熱線:

          JavaScript中的函數(shù)前綴:~和!的誤區(qū)與真相

          JavaScript中的函數(shù)前綴:~和!的誤區(qū)與真相

          JavaScript編程中,我們經(jīng)常使用各種運(yùn)算符來處理數(shù)據(jù)和控制程序流程。然而,對(duì)于函數(shù)定義和調(diào)用前的 ~(按位取反)和 !(邏輯非)的使用,存在一些常見的誤區(qū)。本文將介紹這兩個(gè)運(yùn)算符的正確用法,并澄清一些常見的誤解。

          一、邏輯非運(yùn)算符!

          ! 是JavaScript中的一元邏輯非運(yùn)算符,它用來反轉(zhuǎn)布爾值。如果一個(gè)表達(dá)式的結(jié)果為 true,使用 ! 后將變?yōu)?false;反之,如果結(jié)果為 false 或任何假值(如 0、""、null、undefined、NaN),! 將使其變?yōu)?true。

          示例

          let isActive=true;
          console.log(!isActive); // 輸出:false
          

          二、按位取反運(yùn)算符~

          ~ 是按位取反運(yùn)算符,它對(duì)數(shù)值的每個(gè)位執(zhí)行取反操作,然后加1。在JavaScript中,所有的數(shù)字都是以32位浮點(diǎn)數(shù)的形式存儲(chǔ),因此 ~ 運(yùn)算符會(huì)對(duì)32位的二進(jìn)制數(shù)進(jìn)行操作。

          示例

          let num=5;
          console.log(~num); // 輸出:-6
          

          三、函數(shù)調(diào)用前的~和!

          在函數(shù)調(diào)用前使用 ~ 和 ! 是不標(biāo)準(zhǔn)的。~ 需要一個(gè)數(shù)值類型的操作數(shù),而函數(shù)調(diào)用本身并不返回一個(gè)數(shù)值,除非函數(shù)明確返回了一個(gè)數(shù)值類型。而 ! 雖然可以用于邏輯反轉(zhuǎn),但在函數(shù)調(diào)用前使用它并沒有實(shí)際意義。

          誤區(qū)示例

          function doSomething() {
            return true;
          }
          console.log(!doSomething()); // 正確用法,輸出:false
          console.log(~doSomething()); // 錯(cuò)誤用法,doSomething() 不返回?cái)?shù)值
          

          四、立即執(zhí)行函數(shù)表達(dá)式(IIFE)與!

          在某些情況下,使用 ! 前置立即執(zhí)行函數(shù)表達(dá)式(IIFE)可以避免函數(shù)聲明提升帶來的問題,尤其是在使用ES6模塊或在嚴(yán)格模式下。這里有個(gè)JS的小技巧,如果上一句句末沒有分號(hào)結(jié)尾,下一句function前面寫~或者!可以正常執(zhí)行哦,否則會(huì)報(bào)錯(cuò)。

          示例

          !function() {
            console.log("This will run immediately and won't cause hoisting issues.");
          }();
          
          console.log("the end no ;")
          
          !(function(){ // 這種表達(dá)式的用法,上一句句末可以不用寫;號(hào)
              console.log("hello")
          })();
          

          五、結(jié)論

          • ~ 和 ! 在JavaScript中的主要作用分別是按位取反和邏輯非。
          • 在函數(shù)調(diào)用前使用這兩個(gè)運(yùn)算符沒有實(shí)際意義,應(yīng)避免這種用法。
          • ! 和 ~可以用于立即執(zhí)行函數(shù)表達(dá)式,以避免函數(shù)提升問題,但這不是一個(gè)常見的做法。

          了解這些運(yùn)算符的正確用法可以幫助你編寫更清晰、更有效的JavaScript代碼。記住,代碼的可讀性和一致性對(duì)于團(tuán)隊(duì)協(xié)作和代碼維護(hù)至關(guān)重要。

          開始學(xué)Python的你一定很疑惑,為什么Python里會(huì)出現(xiàn)各種各樣的下劃線 “_”,而且位置都不相同,有時(shí)候在名稱后面,有時(shí)候在前面,有時(shí)候還會(huì)在數(shù)字中間......這些下劃線都分別代表了什么意思?本文就給大家普及普及。

          在本文中,我們將介紹 Python 中 _ 字符的不同用法。就像 Python 中的許多其他內(nèi)容一樣,我們會(huì)看到 “_” 的不同用法主要是慣例問題。這里我們將介紹的五種不同情況:

          1. 單下劃線(例如 _
          2. 名稱前加一個(gè)下劃線(例如 _total
          3. 名稱后加一個(gè)下劃線(例如 total_
          4. 數(shù)字文字中的單個(gè)下劃線(例如 100_000
          5. 名稱前加上雙下劃線(例如 __total
          6. 名稱前后加雙下劃線(例如 __init__

          一.單下劃線(_)

          單下劃線通常在3種情況下使用:

          1.在解析程序中

          _名稱指向交互式解釋器會(huì)話中,最后執(zhí)行的語句結(jié)果。這首先是由標(biāo)準(zhǔn)CPython解釋器完成的,其他解析器也緊隨其后。

          >>> _
          Traceback (most recent call last):
            File "<stdin>", line 1, in <module>
          NameError: name '_' is not defined
          >>> 42
          >>> _
          42
          >>> 'alright!' if _ else ':('
          'alright!'
          >>> _
          'alright!'

          2.作為名稱

          這與上一點(diǎn)有些關(guān)聯(lián),_ 用作一次性的名稱。這為了讓閱讀代碼的人知道,這里分配了某個(gè)名稱,但是不打算使用。例如,你可能對(duì)循環(huán)計(jì)數(shù)器的實(shí)際值不感興趣:

          n=42
          for _ in range(n):
              do_something()

          3.i18n

          我們可以看到 _ 還可以用作函數(shù)。在這種情況下,它通常用于執(zhí)行國(guó)際化和本地化字符串轉(zhuǎn)換查找的函數(shù)的名稱。這似乎源于并遵循 C 語言的相關(guān)規(guī)則。如在Django文檔中所見:

          from django.http import HttpResponse
          from django.utils.translation import gettext as _
          
          def my_view(request):
              output=_("Welcome to my site.")
              return HttpResponse(output)

          第二個(gè)和第三個(gè)用法可能會(huì)發(fā)生沖突,因此,在任何還將 _ 用作 i18n 查找和翻譯的代碼塊中,都應(yīng)避免使用 _ 作為一次性使用的名稱。

          二.名稱前加單下劃線(例如_total

          名稱前的單個(gè)下劃線用于指定程序員將名稱視為“私有”。這可以視為一種約定,方便閱讀代碼的人知道以 _ 開頭的名稱供內(nèi)部使用。 正如Python文檔所述:

          帶有下劃線的名稱(例如 _spam)應(yīng)被視為 API 的非公開部分(無論是函數(shù)、方法還是數(shù)據(jù)成員)。它應(yīng)被視為實(shí)現(xiàn)細(xì)節(jié),如有更改,恕不另行通知。

          *之所以說是一種約定,是因?yàn)樗鼘?shí)際上對(duì)解析程序而言有著某種意義;如果我們從 <module / package> import *,除非以模塊/軟件包的 __all__ 列表明確包含它們,否則不會(huì)導(dǎo)入以 _ 開頭的名稱。

          三. 名稱后的單下劃線(例如 total_

          名稱后面的單個(gè)下劃線用于避免名稱遮蓋另一個(gè)名稱,當(dāng)然是慣例。例如,如果你想命名某種格式,為了避免掩蓋 Python 的內(nèi)置格式,你可以將其命名為 format_

          四. 數(shù)字字面中的單下劃線(例如 100_000

          PEP 515 指數(shù)建議擴(kuò)展 Python 的語法,以便下劃線可以用作整體、浮點(diǎn)和復(fù)雜數(shù)字文本中數(shù)字分組的可視分隔符,理由是:

          這是其他現(xiàn)代語言的常見特征,可以幫助提高較長(zhǎng)的文字或文本的可讀性,其值應(yīng)清楚地分隔成部分,如字節(jié)或十六進(jìn)制表示法中的單詞。

          因此,我們可以執(zhí)行以下操作::

          # 十進(jìn)制數(shù)按千分組
          amount=10_000_000.0
          
          # 按字對(duì)十六進(jìn)制地址進(jìn)行分組
          addr=0xCAFE_F00D
          
          # 用二進(jìn)制文字將位分組為半字節(jié)
          flags=0b_0011_1111_0100_1110
          
          #相同,用于字符串轉(zhuǎn)換
          flags=int('0b_1111_0000', 2)

          五. 姓名前的雙下劃線(例如__total

          在名稱(特別是方法名稱)前使用雙下劃線(__)不是約定,只是對(duì)解析程序有特殊的意義。Python 管理這些名稱,它用于避免名稱與子類定義的名稱沖突。正如Python文檔所指出的那樣,任何形式為__spam 的標(biāo)識(shí)符(至少兩個(gè)前導(dǎo)下劃線,并且最多一個(gè)尾隨下劃線)在文本上均被 _classname__spam替換,其中 classname 是當(dāng)前類名,其中前導(dǎo)下劃線被去除。

          以以下示例為例:

          >>> class A(object):
          ...     def _internal_use(self):
          ...         pass
          ...     def __method_name(self):
          ...         pass
          ... 
          >>> dir(A())
          ['_A__method_name', ..., '_internal_use']

          如上所示,_internal_use 不變,但是 __method_name 被改成 _ClassName__method_name。 現(xiàn)在,如果你創(chuàng)建 A 的子類,比如說 B(壞、壞名字),那么你將無法輕易覆蓋 A 的__method_name

          >>> class B(A):
          ...     def __method_name(self):
          ...         pass
          ... 
          >>> dir(B())
          ['_A__method_name', '_B__method_name', ..., '_internal_use']

          這里的預(yù)期行為幾乎等同于Java中的最終方法和C ++中的常規(guī)(非虛擬)方法。

          六. 在名稱之前和之后加上雙下劃線(例如__init__

          這些是 Python 使用的特殊方法名稱。對(duì)于我們來說,這只是一個(gè)約定,即 Python 系統(tǒng)使用與用戶定義的名稱不沖突的名稱的一種方式。然后,我們通常會(huì)覆蓋這些方法并為 Python 調(diào)用它們時(shí)定義所需的行為。例如,在編寫類時(shí)__init__重寫方法。

          沒有什么可以阻止我們編寫自己的特殊方法名稱(但是最好別這么做):

          >>> class C(object):
          ...     def __mine__(self):
          ...         pass
          ...
          >>> dir(C)
          ... [..., '__mine__', ...]

          盡量不要使用這種命名方式,只需要讓Python定義的特殊名稱遵循該約定即可。


          參考鏈接:

          Django官方文檔:https://docs.djangoproject.com/en/dev/topics/i18n/translation/

          Python官方文檔:https://docs.python.org/3/tutorial/classes.html#private-variables

          PEP515:https://www.python.org/dev/peps/pep-0515/


          --END--

          以上為本文所有內(nèi)容,希望能幫助各位Python愛好者答疑解惑!

          希望本文的同學(xué),記得點(diǎn)贊哈~也可以關(guān)注我們!

          天繼續(xù)為大家分享前端的知識(shí),如果對(duì)前端比較感興趣的小伙伴,可以關(guān)注我,我會(huì)更大家繼續(xù)分享更多與前端相關(guān)的內(nèi)容,當(dāng)然如果內(nèi)容中又不當(dāng)?shù)幕蛘呶淖皱e(cuò)誤的,歡迎大家在評(píng)論區(qū)留言,我會(huì)及時(shí)修改糾正。

          1.初識(shí)HTML

          • HTML指的是超文本標(biāo)記語言(Hyper Text Markup Language),是用來描述網(wǎng)頁的一種語言。
          • HTML不是一種編程語言,而是一種標(biāo)記語言(markup language),標(biāo)記語言是一套標(biāo)記標(biāo)簽(markup tag)。
          • HTML標(biāo)簽描述網(wǎng)頁元素,比如圖片標(biāo)簽、文字標(biāo)簽、鏈接標(biāo)簽等。
          • HTML標(biāo)簽有自己的語法規(guī)范,并且所有的HTML標(biāo)簽都是用尖括號(hào)(<>)包起來。

          2.HTML骨架結(jié)構(gòu)

          HTML基本骨架語法如下所示:

          HTML基本骨架結(jié)構(gòu)

          HTML骨架標(biāo)簽說明:

          HTML骨架標(biāo)簽說明

          下面通過對(duì)HTML骨架的基本認(rèn)識(shí),你也可以小試牛刀,打開記事本,新建一個(gè)帶有HTML骨架標(biāo)簽的.txt文件。

          在.txt中寫入HTML骨架標(biāo)簽,保存,并將.txt的后綴名修改為.html,右鍵單擊你寫好的文件,然后選擇你要顯示的瀏覽器,本人習(xí)慣用谷歌的瀏覽器,這個(gè)根據(jù)個(gè)人的習(xí)慣來選擇就好了。

          示例代碼如下:

          我的第一個(gè)HTML頁面

          注意:HTML標(biāo)簽名、標(biāo)簽的屬性名以及大部分屬性值都統(tǒng)一用小寫,不要問我為什么,這是人家W3C的規(guī)范,咱們按規(guī)范行事就好啦。

          正確示范:

          書寫規(guī)范

          錯(cuò)誤示范:

          錯(cuò)誤的規(guī)范

          3.HTML標(biāo)簽的分類

          HTML標(biāo)簽:在HTML頁面中,帶有“<>”尖括號(hào)符號(hào)的元素被稱為HTML標(biāo)簽元素,如上面的<html>、<head>、<body>,它們都是用尖括號(hào)包起來,而且這幾個(gè)標(biāo)簽還是HTML的骨架結(jié)構(gòu)標(biāo)簽,就好比人之所以能站立,就是因?yàn)橛泄羌苤巍?/p>

          通常我們將其分為常規(guī)元素和空元素,以下是對(duì)兩種類型的介紹。

          常規(guī)元素(雙標(biāo)簽)

          語法:<標(biāo)簽名>內(nèi)容</標(biāo)簽名>,如<body>我的網(wǎng)頁內(nèi)容</body>。

          說明:

          • 該語法中"<標(biāo)簽名>"表示該標(biāo)簽的作用開始,一般稱為"開始標(biāo)簽(start tag)","</標(biāo)簽名>"表示該標(biāo)簽的作用結(jié)束,一般稱為"結(jié)束標(biāo)簽(end tag)"。
          • 和開始標(biāo)簽相比,結(jié)束標(biāo)簽只是在前面加了一個(gè)封閉符"/"。
          • 提示:HTML多數(shù)都是雙標(biāo)簽。

          空元素(單標(biāo)簽或自封閉標(biāo)簽)

          語法:<標(biāo)簽名 /> ,比如 <br />

          說明:

          • 空元素用單標(biāo)簽來表示。簡(jiǎn)單說,就是里邊不需要包含內(nèi)容,屬于自封閉標(biāo)簽。
          • 提示:此類標(biāo)簽較少,只需要用到的時(shí)候記住就行,在開發(fā)過程中自己不斷的積累。

          4.HTML標(biāo)簽的關(guān)系

          標(biāo)簽之間的關(guān)系主要是針對(duì)雙標(biāo)簽,雙標(biāo)簽之間的關(guān)系分為如下幾種。

          嵌套關(guān)系:

          嵌套關(guān)系

          并列關(guān)系:

          并列關(guān)系

          提示:在開發(fā)的過程中,如果標(biāo)簽之間是嵌套關(guān)系,那么子元素可以通過tab鍵進(jìn)行縮進(jìn),讓其結(jié)構(gòu)和格式更加的清晰。

          5.前端開發(fā)工具

          之前我們是通過記事本來寫html骨架結(jié)構(gòu),會(huì)發(fā)現(xiàn)這種情況針對(duì)幾行代碼,還是能消化的,但是碰上幾千甚至幾萬以及更多,此時(shí)應(yīng)該怎么辦呢?這個(gè)時(shí)候就得用到我們的前端開發(fā)工具,通過前端開發(fā)工具,可以更快更高效的提高我們的開發(fā)效率,那我們常見的前端開發(fā)工具有如下幾種:

          常見的前端開發(fā)工具

          說明:

          • Dreamweaver:學(xué)校用得多。
          • Sublime:推薦使用,輕量級(jí),效率高,打開速度快,優(yōu)點(diǎn)多,但是使用插件的時(shí)候,需要下載哦。
          • WebStorm:這個(gè)我沒用過,但是有的人很喜歡,屬于付費(fèi)的。
          • Hbuilder:推薦使用,輕量級(jí),免費(fèi),效率高,打開速度快,現(xiàn)在都是使用HbuilderX版本,這個(gè)是可以去官網(wǎng)下載到的,重點(diǎn)它免費(fèi)、免費(fèi)、免費(fèi),重要的事情說三遍!!!。
          • VS Code:這個(gè)是微軟的,也屬于開源免費(fèi)的,功能很強(qiáng)大的,尤其是在JavaScript開發(fā)方面,也是本人推薦使用的。

          提示:Hbuilder和VS Code誰更好?我只能說各有千秋,根據(jù)個(gè)人的習(xí)慣,我個(gè)人就比較喜歡Hbuilder,偶爾會(huì)用VS Code,如果你習(xí)慣用VS Code,繼續(xù)用就行了。

          以上開發(fā)工具的安裝使用,在網(wǎng)絡(luò)上都會(huì)有很多資料,可以動(dòng)動(dòng)小手指就能查到哦。

          今天就分享到這兒吧,如果喜歡的記得點(diǎn)關(guān)注哦,也歡迎在留言區(qū)留言。


          主站蜘蛛池模板: 一区二区无码免费视频网站| 亚洲Av永久无码精品一区二区| 色一情一乱一伦一区二区三欧美| 精品视频在线观看一区二区三区| 无码少妇一区二区三区芒果| 国产韩国精品一区二区三区久久| 日韩一区二区a片免费观看| 亚洲熟妇AV一区二区三区宅男| 国产伦精品一区二区三区免.费| 国产韩国精品一区二区三区 | 成人区精品一区二区不卡亚洲| 99久久无码一区人妻a黑| 国产一区二区三区视频在线观看| 丰满人妻一区二区三区视频53| 无码精品黑人一区二区三区| 精品国产一区二区三区在线| 亚洲熟妇av一区二区三区| 99在线精品一区二区三区| 亚洲国产成人久久一区WWW| 乱码精品一区二区三区| 国产在线精品一区二区在线看| 国产午夜精品一区二区三区小说 | 国产av天堂一区二区三区| 亚洲蜜芽在线精品一区| 美女视频黄a视频全免费网站一区| 久久se精品一区二区| 日本精品视频一区二区三区| 高清国产AV一区二区三区| 成人国产精品一区二区网站公司| 日韩熟女精品一区二区三区| 麻豆AV无码精品一区二区| 国产在线视频一区| 韩国福利视频一区二区| 亚洲色无码一区二区三区| 国产AV天堂无码一区二区三区 | 日韩视频免费一区二区三区| 另类一区二区三区| 久久99精品免费一区二区| 日韩在线视频一区| 国产成人久久精品区一区二区| 国产精华液一区二区区别大吗|