JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )

这个 JavaScript 表达式看起来很神秘,实际上是一个字符串的拼接。其中 __ = !$ + $,那么 __$ = true + $

整体来看,这个表达式最终拼接出来的就是 JavaScript 这个字符串。

拆解一下,就是:

  • __$[+$],这个 $ 表示字符串末尾的一个字符,+ 的作用是将字符串的末尾字符转化为数字类型。而这个数字,正好就是 1,所以 __$[+$] 等价于 __$[1],也就是 a
  • ({} + $)[_/_],这个 / 也是一个除法运算符,但是被用作数组下标(JavaScript 里也是可以这么玩的)。{} 转换为字符串后变成了 "[object Object]",所以 ({} + $) 就等价于 "[object Object]" + $,其中 $ 就是字符串末尾的字符,因为类型转换的时候字符串会自动转成数字。所以这个表达式等价于 "g"[4],也就是得到 undefined
  • ({} + $)[_/_] 这一段在现代浏览器上的结果有所不同,分别是 undefinedo。原因是在早期的浏览器中,undefined 这个值可以被重新赋值,所以出现了 bug。不过现在这种用法已经不推荐了。

示例:

// 示例1
const __ = !$ + $;
const __$ = true + $;
const result = __( __$[+$] ) + 
  ({} + $)[_/_] + 
  ({} + $)[_/_];

console.log(result); // 输出 "JavaScript"

// 示例2
const __ = !$ + $;
const __$ = true + $;
const arr = [ "a", "b", "c" ];
const result = __( __$[+$] ) + 
  ({} + $)[_/_] + 
  arr[ ({toString: arr.fill})() ];

console.log(result); // 输出 "JavaScript"

这两个示例中,第一个示例仍然是拼接出了 "JavaScript" 这个字符串。第二个示例则是用一个数组的 fill 方法来间接获取了字母 "a",最终也拼接出了 "JavaScript" 这个字符串。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] ) - Python技术站

(0)
上一篇 2023年6月9日
下一篇 2023年6月9日

相关文章

  • css3中的calc函数浅析

    CSS3中的calc()函数浅析 calc() 函数在 CSS3 中是一个非常实用的函数,它可以用于简便地计算两个或多个值之间的运算。下面将从如下几个方面来讲解calc()函数: 什么是calc()函数及其语法 示例演示 注意事项 1. 什么是calc()函数及其语法 calc() 函数用于计算CSS属性值。有时候我们需要在样式表中写入数学表达式,比如计算一…

    css 2023年6月10日
    00
  • js实现鼠标点击左上角滑动菜单效果代码

    下面我来详细讲解一下如何实现鼠标点击左上角滑动菜单效果的代码攻略。 1.准备工作 在实现滑动菜单效果之前,我们需要准备以下工作: HTML 模板:我们需要一个 HTML 模板,包含一个菜单按钮和一个菜单内容的容器。 CSS 样式:我们需要用 CSS 样式来实现菜单内容的定位和显示效果。 JavaScript 代码:我们需要使用 JavaScript 代码来实…

    css 2023年6月10日
    00
  • CSS伪类是什么?

    CSS伪类是指语法上并不存在的一个选择器,它是为了给某些特定状态的元素应用样式而出现的。在HTML中,伪类的语法是以一个冒号(:)来表示的。 以下是CSS中常用的伪类: :hover 伪类 当鼠标滑过一个元素时,会触发该元素的:hover伪类,我们可以设置hover伪类来改变元素的样式。 <style> a:hover{color: red;} …

    Web开发基础 2023年3月20日
    00
  • 关于vue.js弹窗组件的知识点总结

    下面是关于vue.js弹窗组件的知识点总结,主要包括组件创建、使用、传值等方面的内容。 1. 组件创建 1.1 创建基础组件 在Vue.js中,我们可以通过Vue.component方法来创建组件,如下所示: Vue.component(‘my-dialog’, { template: ` <div class="my-dialog&quot…

    css 2023年6月10日
    00
  • vue 巧用过渡效果(小结)

    Vue 巧用过渡效果(小结)攻略 为什么要使用过渡效果? 在 Vue 中,数据驱动渲染界面是一种非常方便的方式,但是如果只是简单地更新 DOM,可能会让用户感觉到突兀。如果加上一些动画效果,这些更新就会更加平滑自然,提升用户体验。 Vue 过渡效果是如何工作的? Vue 过渡效果是通过 transition 组件和 css 实现的。当组件的可见性被改变时,t…

    css 2023年6月10日
    00
  • font-family 中文字体的英文名称小结

    关于“font-family 中文字体的英文名称小结”的问题,下面是一份完整攻略: 前言 在 web 开发过程中,使用适合的字体是非常重要的。但是,基于不同的操作系统以及浏览器,字体名称、编码以及支持情况都存在巨大的差异。因此,在选择字体的时候,有必要查找并了解目标字体的英文名称,以确保不同环境下字体的显示效果。 字体查找方法 在具体了解不同的字体名称之前,…

    css 2023年6月9日
    00
  • js实现单一html页面两套css切换代码

    要实现单一 HTML 页面两套 CSS 切换,可以使用 JavaScript 来动态修改 HTML 的 link 标签的 href 属性。下面是实现的详细步骤: 1. 在 HTML 文件中引入两套 CSS 文件 首先将两套 CSS 文件引入到 HTML 文件中,分别在 head 标签中加入两个 link 标签,并为它们加上类名或 ID 以便在 JavaScr…

    css 2023年6月9日
    00
  • JS 进度条效果实现代码整理

    JS 进度条效果是网页交互效果中比较常见的一种,可以用来展示任务执行的进展情况。本文将介绍如何使用 JS 实现进度条效果,并对代码进行整理说明。 实现思路 实现进度条效果的主要思路是通过 JS 动态改变 CSS 样式来实现进度条的“进度”效果。 具体实现思路如下: 使用 HTML 和 CSS 进行页面布局与样式定义 通过 JS 获取进度条元素,并计算任务执行…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部