js和C#相比。
最大不同,在于js是脚本语言,C#是编译性质的语言。
作用域方面
js的作用域只有全局作用域和方法作用域,但是可以通过let关键字将作用域限制在块中
C#是存在块作用域的,在块中定义的变量,出了这个块就不能使用。
数据类型
js和C#一样从抽象层面来说都具有值类型和对象类型
js的数字只有浮点型,导致计算数据不准确
C#同时具有float, double,int,long等类型
js的string类型是值类型,但是C#的string是比较特殊的对象类型(引用类型)
js的字符串可以用双引号或单引号,但是C#只可以用双引号
js和C#都含有数组对象,null关键字,但是js含有undefined类型,对于未初始化或未声明的变量,值或类型就是undefined
const
js的const可以用来修饰对象,对象的属性值可以改变,但是变量所对应的对象不能更改为其它。
C#的const只能修饰值类型
声明与初始化
js可以先使用,然后声明,即声明提升
C#不声明就不能使用,而且不初始化会赋予默认值。
但是js不进行初始化就是undefined
比较符方面
js多了两个特殊的比较符===和!==
他们两个的特殊之处在于同时比较值和数据类型
C#和大多数语言一样是==和!= 所以这是我觉得比较扯的地方
标记
js可以定义代码label,然后用break和continue配合使用
异步编程
js的异步编程是单线程
C#是直接创建线程
如果是Unity中使用C#,则Unity提供的C#异步操作(StartCoroutine IEnumerator)则是单线层操作。
for循环
js当中存在一个for…in 相当于C#的foreach
定义对象不同
js是通过大括号,并且将所有属性和方法全部写在里面。
C#则是新建类,然后new一个对象
+不同类型
js的加号运算符会尽量对相加的两者进行类型转换,然后得出一个看似正确的结果。
C#则是直接报错。
函数定义
js函数定义没有返回值类型(脚本语言本身就是一种弱类型语言)
而且定义函数需要用function关键字,C#则并不需要。
js的函数可以自调用,即自己调用自己。但是C#不存在这个语法。
js和C#都支持匿名函数,也都支持闭包。
js和C#的函数本质都是对象。
js函数是一个对象,所以也有属于他的属性和方法call(),call方法的第一个参数是对象
其实js函数的本质就是C#中的委托
js函数中可以使用this,这个this指该函数所绑定的对象。如果函数是全局函数,那么就指代window对象
this的使用
在js中,不同的上下文里面this所指代的对象是不同的。
但是在C#中,this指的就是当前对象。
库
js有自己的jquery库
C#也有自己对应的很多dll库可以使用
版权声明:本文为CSDN博主「猫不在」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_33574890/article/details/116563755