5个让你大开眼界的JavaScript奇葩写法-路羽博客-第1张图片

5个让你大开眼界的JavaScript奇葩写法

5个让你大开眼界的JavaScript奇葩写法-路羽博客-第2张图片

作者: 路羽

原创资源分享博客

5个让你大开眼界的JavaScript奇葩写法-路羽博客-第3张图片微信小程序
js

路羽博客 资源分享

前言

JavaScript 作为一门弱类型语言,具有很强的灵活性,因此每个人的编程习惯都可能不同。这也导致了各种奇特的编程方式。这里所说的“奇葩”,实际上是指那些罕见的、很少人使用的写法,但仍然有人会这样写。让我们来盘点一些 JavaScript 中奇怪的写法,虽然它们不一定是好的写法,也不建议大家使用,但了解这些内容可以为我们阅读他人编写的代码提供一些知识储备,同时我们应该倡导编写简洁且易读的代码。

写法一

在函数面前加叹号

!function a(){
    alert("luyuz.cn")
}();

在函数前面添加感叹号表示该函数会被立即执行,无需手动调用,相当于 (function a(){alert("luyuz.cn")})()。除了添加感叹号外,在函数前面添加一元操作符 +-~ 以及 void 也可以实现立即执行的效果,但它们的返回值与正常函数的 undefined 不同。

写法二

两个感叹号 !! 和三个感叹号 !!!

if(!!nothing){
    console.log("我不知道我是什么类型!");
    console.log(!!nothing);
}

!! 一般用来将后面的表达式转换为布尔型的数据 ( boolean ) 因为 javascript 是弱类型的语言(变量没有固定的数据类型)所以有时需要强制转换为相应的类型,同样的 !!! 就是两个感叹号运算的取反。负负得正,正负得负的道理。

写法三

~~,|到底是什么?

var a=8.65456459;
console.log(~~a);//结果是8
console.log(a|0);//结果是8
console.log(a|3);//结果是11

~~ 简单来说就是去除小数部分,单纯的去掉,不做四舍五入操作,a|0 也是如此,a|0 表示把 a 去除小数部分再加上 | 右边的数字。

写法四

代码之前加了个分号(;)

;function(){
   console.log("you are son of bitch!")
};

在 JavaScript 的语法中,分号是可以省略的,但这种机制可能会导致意外的错误。为了避免代码在上线后被合并压缩成一个文件时出现语法错误,建议加上分号,以避免一些潜在的问题。

写法五

一句话代码到底是怎么写成的

((a===1) && (true,a=2)) || ((a===3) && (true,a=4)) || (a=5)
(a===1 ) ? a=2 : ( (a===3) ? (a=4) : (a=5) )

&& 表示前面的代码成立时就运行后面的代码,|| 则刚好相反,表示前面的代码不成立时就运行后面的代码,? 表示前面的代码成立时就运行后面代码冒号 : 前面的代码,不成立时就运行冒号 : 后面的代码,其实都是 if 和 else 的缩写:

if (a===1) {a=2} else if(a===3) {a=4}else{a=5}
分享到:
未经允许不得转载:

作者: 路羽, 转载或复制请以 超链接形式 并注明出处 路羽博客
原文地址: 《5个让你大开眼界的JavaScript奇葩写法》 发布于2024-2-6

评论

          
       
切换注册

登录

忘记密码?

您也可以使用第三方帐号快捷登录

切换登录

注册

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏