久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      c#和JavaScript的區(qū)別是什么

      區(qū)別:1、JavaScript中var關(guān)鍵字可引用不同的類(lèi)型,c#中不可以;2、JS有6種基本數(shù)據(jù)類(lèi)型和1種引用數(shù)據(jù)類(lèi)型,而c#有16種預(yù)定義類(lèi)型和用戶(hù)自定義類(lèi)型;3、string在JS中屬于值(基本)類(lèi)型,而在C#中屬于引用(復(fù)雜)數(shù)據(jù)。

      c#和JavaScript的區(qū)別是什么

      本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5&&C# 8版、Dell G3電腦。

      c#和JavaScript的區(qū)別

      1. var關(guān)鍵字

      // C#中 var total = 15; var mec = new MyExcellentClass();   // 等價(jià)于 int total = 15; MyExcellentClass mec = new MyExcellentClass();

      C#中,var關(guān)鍵字并不是特定類(lèi)型變量的符號(hào)。它只是句法上的速記,表示任何可以從初始化語(yǔ)句的右邊推斷出的類(lèi)型。它不像js的var那樣可以引用不同的類(lèi)型,var關(guān)鍵字并不改變C#的強(qiáng)類(lèi)型性質(zhì)。

      2. 嵌套塊中的本地變量

      // C# void Method {   var num1 = 5;   {     var num2 = 10;     ...   }   ... }
      // JS function Method1() {   var num1 = 5;   {     var num2 = 10;     ...   }   ... }   // 采用es6的let變量 function Method2() {   let num1 = 5;   {     let num2 = 10;     ...   }   ... }

      首先,js在es6之前是沒(méi)有塊級(jí)作用域這個(gè)概念的,也就是說(shuō)在函數(shù)Method1中num1和num2都處于同一個(gè)作用域中(即Method1的函數(shù)作用域)。

      es6中的let變量使得js也能實(shí)現(xiàn)塊作用域的效果,即變量num2僅存在相鄰的這對(duì)大括號(hào){ }中,此時(shí)變量的作用效果同C#的嵌套塊。

      其次,還有一個(gè)區(qū)別,在JS以及C和C++中,變量是可以重名的,在內(nèi)部范圍(塊作用域),內(nèi)部名稱(chēng)掩蓋了外部名稱(chēng),同名變量的值被重置。然而,C#中不允許同名變量(不管嵌套級(jí)別如何,都不能在第一個(gè)名稱(chēng)的有效范圍內(nèi)聲明另一個(gè)同名的本地變量)。

      最后,再擴(kuò)展說(shuō)明一下,與JS、C、C++不同,C#中沒(méi)有全局變量、全局函數(shù),變量和函數(shù)必須在類(lèi)型的內(nèi)部聲明(萬(wàn)物皆在類(lèi)中)。

      3. 數(shù)據(jù)類(lèi)型

      JS的數(shù)據(jù)類(lèi)型:6種基本數(shù)據(jù)類(lèi)型和1種引用數(shù)據(jù)類(lèi)型。

      JS數(shù)據(jù)類(lèi)型
      基本數(shù)據(jù)類(lèi)型 Number,String,Boolean,Undefined,Null,Symbol(es6)
      引用(復(fù)雜)數(shù)據(jù)類(lèi)型 Object(包括函數(shù)、數(shù)組、正則表達(dá)式等一切除基本數(shù)據(jù)類(lèi)型以為的類(lèi)型)

      C#的數(shù)據(jù)類(lèi)型:16種預(yù)定義類(lèi)型和用戶(hù)自定義類(lèi)型。

      C#16種預(yù)定義類(lèi)型
      11種數(shù)值類(lèi)型

      整數(shù)類(lèi)型:sbyte、byte、short、ushort、int、uint、long、ulong

      浮點(diǎn)類(lèi)型:decimal、float、double

      1種Unicode字符類(lèi)型 char
      1種布爾類(lèi)型 bool
      3種復(fù)雜類(lèi)型

      string(Unicode字符數(shù)組)、

      object(所有類(lèi)型的基類(lèi))、

      dynamic(使用動(dòng)態(tài)語(yǔ)言編寫(xiě)的程序集時(shí)使用)

      C#用戶(hù)自定義類(lèi)型
      類(lèi)類(lèi)型 class
      結(jié)構(gòu)類(lèi)型 struct
      數(shù)組類(lèi)型 array
      枚舉類(lèi)型 enum
      委托類(lèi)型 delegate
      接口類(lèi)型 interface

      重點(diǎn)區(qū)別一:string在JS中屬于值(基本)類(lèi)型;string在C#屬于引用(復(fù)雜)數(shù)據(jù)類(lèi)型,其初始值為null,而不是""。

      // C#中 string a; // 此處a的初始值為null,而不是""

      延伸:C#中,如果沒(méi)有初始化的變量,其值會(huì)被編譯器設(shè)為默認(rèn)值,默認(rèn)值由字段的類(lèi)型決定。值類(lèi)型,默認(rèn)值為0;布爾類(lèi)型,默認(rèn)值為false;引用類(lèi)型,默認(rèn)值為null。JS中,如果是直接用var聲明的變量,其默認(rèn)值一律為undefined。

      // JS中 var a; console.log(a); // undefined

      重點(diǎn)區(qū)別二:與JS、C、C++不同,在C#中數(shù)字不具有布爾意義。

      // C#中 int x = 5; if( x ) //錯(cuò),x是int類(lèi)型,不是布爾類(lèi)型   ... if( x == 5 ) //對(duì),因?yàn)楸磉_(dá)式返回了一個(gè)布爾類(lèi)型的值   ...

      重點(diǎn)區(qū)別三:?jiǎn)我?hào)與雙引號(hào)意義不同。

      // C#中,假設(shè)'A'為char類(lèi)型,如果把字符放在雙引號(hào)中,編譯器會(huì)把它看成字符串,從而產(chǎn)生錯(cuò)誤。  // JS中,單引號(hào)和雙引號(hào)一樣,都用于表示字符串(string類(lèi)型): 'A' === "A" // true

      4. foreach 和 forEach

      兩者在使用過(guò)程中的最大區(qū)別就是C#中可以通過(guò)break語(yǔ)法來(lái)跳出循環(huán),而在JS中forEach正常來(lái)說(shuō)是沒(méi)得法子跳出循環(huán)的。

      注意:兩者大小寫(xiě)不同,另外C#中foreach可用于數(shù)組、字符串或集合類(lèi)數(shù)據(jù)類(lèi)型。JS中forEach僅用于數(shù)組對(duì)象。

      代碼參照如下:

      // C#中 int[] a = {1, 2, 3, 4, 5}; foreach (var item in a) {   Console.WriteLine(item + "-- start")   if(item > 3) break;   Console.WriteLine(item + "-- end") }

      JS代碼通過(guò)控制臺(tái)的測(cè)試截圖可以更加直觀的理解,測(cè)試代碼如下:

      // JS測(cè)試代碼,可用于控制臺(tái)輸出比較 var a = [1, 2, 3, 4, 5];  // break --語(yǔ)法報(bào)錯(cuò) a.forEach(item => {   console.log(item + "-- start")   if(item > 3) break;   console.log(item + "-- over") })  // return --并非跳出循環(huán) a.forEach(item => {   console.log(item + "-- start")   if(item > 3) return;   console.log(item + "-- over") })  // throw new Error --非主流行為,的確可以跳出循環(huán) a.forEach(item => {   console.log(item + "-- start")   if(item > 3) throw new Error("-- 強(qiáng)行報(bào)錯(cuò)來(lái)終止遍歷");   console.log(item + "-- over") })

      控制臺(tái)輸出如下:

      c#和JavaScript的區(qū)別是什么

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)