<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          我們?yōu)槭裁匆獙W(xué)習(xí)TypeScript ?

          共 2682字,需瀏覽 6分鐘

           ·

          2021-08-18 05:57


          人生不止有技術(shù)
           鏈接每一位開(kāi)發(fā)者,讓編程更有趣兒!
          關(guān)注


          JS語(yǔ)言存在的問(wèn)題

          先讓小伙伴看一段代碼,,下面代碼中存在錯(cuò)誤,試著找出存在的問(wèn)題,奧利給!??

          //實(shí)現(xiàn)字符串首字母大寫(xiě)
          function getStr({
               if(Math.random() < 0.5){
                    return "hello word";
               }
               return 404;
          }
           function getUpperCase(str{
               let result = srt.Split(" ").map((item) => {
                      return item[0].toupperCase() + item.slice(1);
                   });
                      console.log(reuslt.join(""));
            }
           getUpperCase(getstr());
          ??問(wèn)題之處

          JS中常見(jiàn)的錯(cuò)誤

          • 使用不存在的變量、函數(shù)或成員方法

          • 把一個(gè)不確定的類(lèi)型當(dāng)做一個(gè)確定的類(lèi)型處理

          • 在使用null或者undefined的成員,JS開(kāi)發(fā)錯(cuò)誤排名第一個(gè)就是它

            當(dāng)一個(gè)函數(shù)返回一個(gè)對(duì)象,這個(gè)對(duì)象里有name屬性,但由于程序出錯(cuò),沒(méi)有返回對(duì)象,再使用name屬性就會(huì)報(bào)錯(cuò),如下:

          在開(kāi)發(fā)的過(guò)程中,會(huì)遇到各種各樣的錯(cuò)誤,由于我們是人,不是機(jī)器,沒(méi)有辦法避免這樣的錯(cuò)誤,既然沒(méi)有辦法避免,那好歹在出錯(cuò)的地方提示我一下啊,這總不過(guò)分吧!但遺憾的是由于JS本身的缺憾導(dǎo)致它做不到。

          JS的缺憾:

          1995年5月,Brendan Eich連續(xù)花了10天時(shí)間設(shè)計(jì)了第一個(gè)Mocha實(shí)現(xiàn)的原型。JavaScript設(shè)計(jì)之初只是為了補(bǔ)充Java的,在瀏覽器上做一些小的效果,并不是為了做大型復(fù)雜項(xiàng)目而開(kāi)發(fā)的,文章開(kāi)頭的小例子出了點(diǎn)錯(cuò)誤,這還僅僅只是兩個(gè)函數(shù),大型項(xiàng)目中寫(xiě)的函數(shù)何其多,這就增加了出錯(cuò)率。在js中單詞寫(xiě)錯(cuò),那么明顯的錯(cuò)誤都不提示!其實(shí)是因?yàn)槟_本里面可以引用其它腳本,其它腳本中有可能有這個(gè)錯(cuò)誤的變量名,所以js不敢報(bào)錯(cuò)。那么JS為什么不能給我們提示錯(cuò)誤!這源于JS的兩個(gè)特點(diǎn),一個(gè)是弱類(lèi)型,弱類(lèi)型指的是某個(gè)變量可以隨時(shí)更換類(lèi)型,但是像java,c#這些是不行的,它們是強(qiáng)類(lèi)型語(yǔ)言,不能隨意的更改類(lèi)型。

          • 舉個(gè)栗子??:

          我們給一個(gè)width寬度賦值為100,寫(xiě)了很多行代碼后,我們又將width賦值為'100px',又寫(xiě)了很多代碼后,設(shè)置最終寬度的時(shí)候,可能腦子發(fā)熱,之前我到底是設(shè)置的是100,還是100px,最后不知不覺(jué)在最后結(jié)果上又拼接上'px',最終報(bào)錯(cuò)了,要是早發(fā)現(xiàn)了那還好,要是等項(xiàng)目上線(xiàn)了再發(fā)現(xiàn),那就嗝屁了??~

           let width = 100;
           //....許多行代碼
           width = "100px"//相當(dāng)于埋了一顆雷,什么時(shí)候爆炸不知道,要是等項(xiàng)目上線(xiàn)了,那完蛋了,嗝屁了~~
           //...許多行代碼

           document.querySelector("xxx").style.width = width + "px";

          另一個(gè)特點(diǎn)是JS是解釋性語(yǔ)言,解釋性語(yǔ)言特點(diǎn)就是看一段代碼執(zhí)行一段,這就導(dǎo)致一個(gè)問(wèn)題,我們寫(xiě)的代碼必須要運(yùn)行出來(lái)才能知道哪里報(bào)錯(cuò)了,而不是我們?cè)诰帉?xiě)代碼的時(shí)候查找錯(cuò)誤

          總結(jié)一下:

          1. JS語(yǔ)言本身的特性,決定了該語(yǔ)言無(wú)法適應(yīng)大型復(fù)雜的項(xiàng)目
          2. 弱類(lèi)型:某個(gè)變量,可以隨時(shí)更換類(lèi)型
          3. 解釋性語(yǔ)言:錯(cuò)誤發(fā)生的時(shí)間是在運(yùn)行時(shí)

          因此,前端開(kāi)發(fā)中大部分時(shí)間是在排錯(cuò),而這些不起眼的錯(cuò)誤占據(jù)了我們大量的時(shí)間,并且這些修改字母的時(shí)間完全是浪費(fèi)生命,沒(méi)有任何的意義,也不能提高自身技術(shù)能力,畢竟在公司時(shí)間就是金錢(qián),那么有什么能解決一下這個(gè)問(wèn)題嗎?

          這時(shí)TypeScript出來(lái)了,TypeScript就能解決這些問(wèn)題,我們?yōu)槭裁匆獙W(xué)ts,實(shí)際上是為了提高我們開(kāi)發(fā)周期,提高效率,能夠縮減我們項(xiàng)目周期,少犯一些莫名其妙的錯(cuò)誤

          TypeScript語(yǔ)言特點(diǎn)

          TypeScript簡(jiǎn)稱(chēng)TS,TypeScript是JavaScript的超集,是一個(gè)可選的靜態(tài)的類(lèi)型系統(tǒng)

          • 超集

            整數(shù)里面包括了正整數(shù)、負(fù)整數(shù)、0,那么就可以說(shuō)整數(shù)是正整數(shù)的超集。TypeScript是JavaScript的超集,也就是說(shuō)TypeScript包含了JavaScript的所有功能,在此之上還增加了類(lèi)型系統(tǒng)

          • 類(lèi)型系統(tǒng)

          對(duì)代碼中所有的標(biāo)識(shí)符(變量、函數(shù)、參數(shù)、返回值)進(jìn)行類(lèi)型檢查

          • 可選的

          就是類(lèi)型系統(tǒng)可用可不用,除非你是神人,不寫(xiě)錯(cuò)誤代碼,不然沒(méi)有任何理由不使用TS

          • 靜態(tài)的

          靜態(tài)就是類(lèi)型檢查發(fā)生的時(shí)間點(diǎn)是在編譯的時(shí)候,而非運(yùn)行時(shí),因此就解決了js是解釋性語(yǔ)言的問(wèn)題,代碼運(yùn)行之前有一個(gè)編譯的過(guò)程, 需要注意的是js代碼在運(yùn)行過(guò)程中TS是不參與類(lèi)型檢查的

          無(wú)論是瀏覽器環(huán)境,還是node環(huán)境,無(wú)法直接識(shí)別ts代碼,可以只用tsc將ts代碼轉(zhuǎn)換為es代碼,tsc是TS編譯器

          ?? 好了, 以上就是我的分享,希望小伙伴們點(diǎn)贊 ?? 支持一下哦~ ??,我會(huì)更有動(dòng)力的 ??

          瀏覽 29
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美视频综合网 | 婷婷色小说| 丁香五月婷婷亚洲 | 影音先锋看AV | 亚洲三级电影在线观看 |