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日

相关文章

  • Vue实现背景更换颜色操作

    下面是Vue实现背景更换颜色的完整攻略: 1. 确定需求 在实现之前,首先需要明确需求,即用户可以通过某种方式更改页面背景颜色,所以我们需要提供一个可操作的控件来实现此功能。 2. 创建Vue组件 为了实现页面背景颜色更换功能,我们可以创建一个Vue组件。下面是一个简单的Vue组件示例: <template> <div> <h1…

    css 2023年6月9日
    00
  • 用div实现像table一样的布局方法

    当我们需要实现像table一样的布局效果时,我们可以使用div元素来代替table元素进行布局。 以下是实现这一效果的步骤: 1. HTML结构 首先,我们需要按照table的结构来构建HTML结构,如下所示: <div class="table"> <div class="table-row"&gt…

    css 2023年6月10日
    00
  • 基于firebug的firefox扩展 css usage

    “基于firebug的firefox扩展 css usage”是一款非常实用的浏览器扩展,可以帮助网页设计者更好地了解和优化自己的 CSS 代码。下面详细介绍如何使用这一扩展。 步骤1:安装扩展 首先,我们需要在 Firefox 网站上下载安装“CSS Usage”扩展。然后,在 Firefox 页面中选择“附加组件”菜单,并找到“CSS Usage”扩展。…

    css 2023年6月10日
    00
  • 手机端页面rem宽度自适应脚本

    下面是关于“手机端页面rem宽度自适应脚本”的完整攻略。 什么是rem? rem是一种可以相对于根元素大小进行调整的单位,它可以用于替代像素作为页面布局的单位。使用rem单位的一个好处是,整个页面的宽度可以根据页面宽度大小进行自动调整,达到适配不同的设备的屏幕。 rem宽度自适应脚本的实现 我们可以通过javascript编写自适应rem脚本,根据设备宽度动…

    css 2023年6月10日
    00
  • 帝国cms常用标签调用方法(灵动标签和万能标签的调用方法)

    帝国 CMS 是一款功能强大的内容管理系统,通过使用其提供的标签可以快速地调用各种内容,在实际网站开发中有着广泛应用。其中灵动标签和万能标签是最为常用的两种标签。本文将详细讲解这两种标签的调用方法。 灵动标签的调用方法 灵动标签主要用于动态调用栏目、文章等信息。下面介绍一些常用的灵动标签的调用方法。 调用栏目信息 {$categroy = implode(&…

    css 2023年6月10日
    00
  • 用CSS实现Tab页切换效果的示例代码

    下面我将详细讲解如何用CSS实现Tab页切换效果的示例代码的完整攻略。 1. HTML结构 首先,在HTML中需要定义Tab选项卡的基本结构。我们需要一个Tab容器(通常是一个div元素),里面包含若干个Tab选项卡。每个Tab选项卡需要一个标题和对应的内容部分。基本结构如下: <div class="tab-container"&…

    css 2023年6月9日
    00
  • 获取元素位置的position()与offset()方法区别介绍

    当想要在JS中获取DOM元素的位置时,可以使用jQuery提供的两个方法position()和offset()。它们都可以获取元素在页面上的位置信息。本文将会详细讲解这两个方法的区别,以及如何选择使用哪种方法来获取元素的位置信息。 position()方法 position()方法获取的是指定元素相对于它的父元素的定位。在获取的坐标值中,包括了元素的widt…

    css 2023年6月10日
    00
  • Dreamweaver cc2018主题颜色怎么设置?

    Dreamweaver CC 2018是一款强大的网页设计工具,它的主题颜色设置可以帮助用户自定义软件的界面颜色,提高用户体验。下面是完整的攻略: 步骤一:打开Dreamweaver设置页面 在Dreamweaver主界面中,单击菜单栏上的“编辑” -> “首选项” -> “界面”。 步骤二:选择颜色方案 在设置页面中,有多个可供选择的颜色方案,…

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