📅  最后修改于: 2023-12-03 14:53:22.708000             🧑  作者: Mango
当我们想到Javascript时,大多数人会想到一种方便的脚本语言,可以轻松地在网页上实现动态效果,交互性和用户体验。但是,Javascript也有一些令人意想不到的奇怪的行为和功能,这些可能会让一些开发人员感到困惑。
在Javascript中,我们通常使用!=
运算符来检查两个值是否不相等。但是,Javascript也提供了!==
运算符,用于执行不完全相等(或类型)比较。
console.log(1 != '1'); // false
console.log(1 !== '1'); // true
在数学中,零不能被除以任何数字,否则会导致无限大的结果。但在Javascript中,零被零除实际上会得到NaN(不是数字)的结果!
console.log(0 / 0); // NaN
¯\_(ツ)_/¯
这个表情符号可能在Javascript中有奇怪的用处。实际上,这是一个合法的变量名,它可以用来存储任何值。
const ¯\_(ツ)_/¯ = 'Hello World';
console.log(¯\_(ツ)_/¯); // Hello World
Javascript是一种弱类型语言,因此它可能会自动进行隐式类型转换。例如,当我们与字符串连接时,Javascript会将其他数据类型转换为字符串。
console.log(1 + '1'); // '11'
console.log(true + true); // 2
在Javascript中,如果我们没有使用var
,let
或const
关键字定义变量,它将自动成为全局变量。这可能会导致意想不到的行为,并且我们应该始终避免在全局范围内定义变量。
function foo() {
bar = 'hello'; // 隐式定义全局变量
}
foo();
console.log(bar); // 'hello'
以上是一些奇怪但又有趣的Javascript行为和功能。尽管可能会导致一些困惑,但了解它们可以使我们更好地理解Javascript的工作方式,并更好地编写代码。