JavaScript运算符以及JavaScript存在的问题

2022-06-09 17:51:25 浏览数 (1)

JavaScript运算符以及JavaScript存在的问题

运算符

描述

用于数值类型的时候,是加法;用于字符串和其它数据类型(包括字符串)的时候,将字符串和其它数据类型连接起来

-

减法

*

乘法

/

真除法

%

取余

自增,前置 或者后置

自减,前置–或者后置–

=

赋值运算符

==

等于

===

绝对等于(值和类型均相等)

!=

不等于

!==

不绝对等于(值和类型有一个不相等,或两个都不相等)

>

大于

<

小于

>=

大于或等于

<=

小于或等于

&&

逻辑与

||

逻辑或

!

逻辑非

?:

条件表达式

可以将 ,-,*,/和=结合起来使用,形成复合赋值运算符。例如: a =1,n-=m;它们的含义是a = a 1和n = n - m.

JavaScript是动态,弱类型语言

JavaScript毫无疑问是动态语言,当你定义变量的时候,并没有声明变量的数据类型;另外值得关注的一点是JavaScript还是弱类型的语言,例如:

代码语言:javascript复制
var str = "123"
var b = true
var num = 456

var res1 = str   b     //可以运算,结果是字符串123true
var res2 = str   num   //可以运算,结果是字符串123456
var res3 = b   num     //可以运算,结果是数值457

动态语言是极其灵活的,它能带来静态语言所没有的优势。但是JavaScript是动态语言的同时又是弱数据类型语言。这样就过于灵活了,对于工程而言是灾难性的。例如,我有两个变量a和b,他们之间进行加法运算,预期的结果是两个数值相加,得到一个数值类型。但是如果现在b变成了字符串形式的数字,那么将会导致最终的结果变为字符串类型,并且这样不会有任何报错。对于程序而言,这将是灾难性的错误。这将导致程序的结果是不可控的。

JavaScript的替代品?

JavaScript是前端的必需品,它是浏览器中运行的唯一语言。每一位前端开发者都需要使用它。但是JavaScript存在上面的问题,现在的方法是进行转译。转译就是采用另外一种语言编写代码,然后将其转换为JavaScript。但是这样,你还是无法避免使用JavaScript。

目前看来,TypeScript是取代JavaScript的一个更好的选择。TypeScript不是一种全新的语言,而是JavaScript的超集。TypeScript编译器可以将TypeScript代码编译为有效的JavaScript。

另外值得一提的是,随着WebAssembly被广泛采用,JavaScript是Web浏览器支持的唯一语言的情况可能发生变化。目前所有主流浏览器都支持WebAssembly,将来它很可能成为面向Web的语言的默认编译目标。目前的WebAssembly需要与JavaScript代码搭配运行,因为WebAssembly无法直接访问网页。这意味着如果不经过JavaScript层,WASM就无法操纵DOM或接收事件。

虽然Mozilla声称WebAssembly并不是用来代替JavaScript的。类似于支付宝不是用来替代钱包的。JavaScript当初并不是要取代嵌入浏览器的Java。Web应用程序并非旨在替代桌面应用。但一旦能做到这些,它们必然会走上那条路。例如今天我们能看到的各种各样的非原生应用取代原生应用。

对于写过多种语言的我而言,只是希望能够有一个较好的JavaScript替代品。解决JavaScript出现的问题。

0 人点赞