Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Apakah perbezaan antara c# dan JavaScript

Apakah perbezaan antara c# dan JavaScript

青灯夜游
青灯夜游asal
2022-01-12 16:23:204599semak imbas

Perbezaan: 1. Kata kunci var dalam JavaScript boleh merujuk kepada jenis yang berbeza, tetapi tidak dalam C# 2. JS mempunyai 6 jenis data asas dan 1 jenis data rujukan, manakala C# mempunyai 16 jenis yang dipratentukan dan ditentukan pengguna; jenis; 3. String ialah jenis nilai (asas) dalam JS, tetapi merupakan data rujukan (kompleks) dalam C#.

Apakah perbezaan antara c# dan JavaScript

Persekitaran pengendalian tutorial ini: sistem windows7, javascript1.8.5&&C# versi 8, komputer Dell G3.

Perbezaan antara c# dan JavaScript

1 var kata kunci

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

C#. , kata kunci var bukan simbol untuk jenis pembolehubah tertentu. Ia hanyalah singkatan sintaksis untuk untuk sebarang jenis yang boleh disimpulkan dari sebelah kanan pernyataan permulaan. Ia bukan seperti var js yang boleh merujuk kepada jenis yang berbeza Kata kunci var tidak mengubah sifat jenis kuat C#.

2 Pembolehubah setempat dalam blok bersarang

// 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;
    ...
  }
  ...
}

Pertama sekali, js tidak mempunyai kesan peringkat blok sebelum es6. Konsep domain bermaksud bahawa dalam fungsi Kaedah1, kedua-dua num1 dan num2 berada dalam skop yang sama (iaitu, skop fungsi Kaedah1).

Pembolehubah let dalam es6 membolehkan js juga mencapai kesan skop blok, iaitu pembolehubah num2 hanya wujud dalam pasangan pendakap bersebelahan { }. sama seperti blok bersarang C#.

Kedua, terdapat satu lagi perbezaan Dalam JS, C dan C, pembolehubah boleh dinamakan semula Dalam skop dalaman (skop blok), nama dalaman menutup nama luaran, dan nilai pembolehubah dengan nama yang sama dinamakan semula. Walau bagaimanapun, pembolehubah dengan nama yang sama tidak dibenarkan dalam C# (tanpa mengira tahap bersarang, anda tidak boleh mengisytiharkan pembolehubah tempatan lain dengan nama yang sama dalam skop nama pertama yang sah).

Akhirnya, izinkan saya mengembangkan perkara ini Tidak seperti JS, C dan C, tiada pembolehubah global atau fungsi global dalam C# dan fungsi mesti diisytiharkan dalam jenis (semuanya dalam kelas).

3. Jenis data

Jenis data JS: 6 jenis data asas dan 1 jenis data rujukan.

JS数据类型
基本数据类型 Number,String,Boolean,Undefined,Null,Symbol(es6)
引用(复杂)数据类型 Object(包括函数、数组、正则表达式等一切除基本数据类型以为的类型)

Jenis data C#: 16 jenis yang dipratentukan dan jenis yang ditakrifkan pengguna.

C#16 jenis pratakrif
11 jenis berangka
C#16种预定义类型
11种数值类型

整数类型:sbyte、byte、short、ushort、int、uint、long、ulong

浮点类型:decimal、float、double

1种Unicode字符类型 char
1种布尔类型 bool
3种复杂类型

string(Unicode字符数组)、

object(所有类型的基类)、

dynamic(使用动态语言编写的程序集时使用)

Jenis integer: sbyte, byte, short, ushort, int, uint, long, ulong
C#用户自定义类型
类类型 class
结构类型 struct
数组类型 array
枚举类型 enum
委托类型 delegate
接口类型 interface
Jenis titik terapung: perpuluhan , float, double
1 jenis aksara Unicode char
1 jenis Boolean type td> bool
3 jenis kompleks rentetan (tatasusunan aksara Unicode), objek (kelas asas untuk semua jenis), dinamik (digunakan apabila menggunakan himpunan yang ditulis dalam bahasa dinamik)

重点区别一:string在JS中属于值(基本)类型;string在C#属于引用(复杂)数据类型,其初始值为null,而不是""。

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

延伸:C#中,如果没有初始化的变量,其值会被编译器设为默认值,默认值由字段的类型决定。值类型,默认值为0;布尔类型,默认值为false;引用类型,默认值为null。JS中,如果是直接用var声明的变量,其默认值一律为undefined。

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

重点区别二:与JS、C、C++不同,在C#中数字不具有布尔意义

// C#中
int x = 5;
if( x ) //错,x是int类型,不是布尔类型
  ...
if( x == 5 ) //对,因为表达式返回了一个布尔类型的值
  ...

重点区别三:单引号与双引号意义不同。

// C#中,假设'A'为char类型,如果把字符放在双引号中,编译器会把它看成字符串,从而产生错误。

// JS中,单引号和双引号一样,都用于表示字符串(string类型):
'A' === "A" // true

4. foreach 和 forEach

两者在使用过程中的最大区别就是C#中可以通过break语法来跳出循环,而在JS中forEach正常来说是没得法子跳出循环的

注意:两者大小写不同,另外C#中foreach可用于数组、字符串或集合类数据类型。JS中forEach仅用于数组对象。

代码参照如下:

// 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代码通过控制台的测试截图可以更加直观的理解,测试代码如下:

// JS测试代码,可用于控制台输出比较
var a = [1, 2, 3, 4, 5];

// break --语法报错
a.forEach(item => {
  console.log(item + "-- start")
  if(item > 3) break;
  console.log(item + "-- over")
})

// return --并非跳出循环
a.forEach(item => {
  console.log(item + "-- start")
  if(item > 3) return;
  console.log(item + "-- over")
})

// throw new Error --非主流行为,的确可以跳出循环
a.forEach(item => {
  console.log(item + "-- start")
  if(item > 3) throw new Error("-- 强行报错来终止遍历");
  console.log(item + "-- over")
})

控制台输出如下:

【相关推荐:javascript学习教程

Atas ialah kandungan terperinci Apakah perbezaan antara c# dan JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn