Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么2+ 40等于42?

为什么2+ 40等于42?

提问于 2017-12-26 08:40:38
回答 2关注 0查看 387

当一位同事向我展示了这一行的JavaScript警报时,我感到莫名其妙。

代码语言:txt
AI代码解释
复制
alert(2+ 40);

运行代码片段Hide results展开代码段

很快就会发现,看起来像一个负号的实际上是一个具有明显不同语义的神秘Unicode字符。

这让我想知道为什么这个字符在解析表达式时不会产生语法错误?

回答 2

嗨喽你好

发布于 2017-12-26 08:52:01

jason的代码不能用于iframe中的元素(因为范围不同于窗口和文档)。我修正了这个问题,并修改了它,以便用作其他jQuery插件(可链接):

示例1:通过单击选择<code>标签内的所有文本,并添加“selected”类:

代码语言:txt
复制
代码语言:txt
AI代码解释
复制
$(function() {
代码语言:txt
AI代码解释
复制
    $("code").click(function() {
代码语言:txt
AI代码解释
复制
        $(this).selText().addClass("selected");
代码语言:txt
AI代码解释
复制
    });
代码语言:txt
AI代码解释
复制
});

例2:点击按钮,在Iframe中选择一个元素:

代码语言:txt
复制
代码语言:txt
AI代码解释
复制
$(function() {
代码语言:txt
AI代码解释
复制
    $("button").click(function() {
代码语言:txt
AI代码解释
复制
        $("iframe").contents().find("#selectme").selText();
代码语言:txt
AI代码解释
复制
    });
代码语言:txt
AI代码解释
复制
});

注意:请记住,iframe源应该驻留在同一个域中以防止安全错误。

jQuery插件:

代码语言:txt
AI代码解释
复制
jQuery.fn.selText = function() {
代码语言:txt
AI代码解释
复制
    var obj = this[0];
代码语言:txt
AI代码解释
复制
    if ($.browser.msie) {
代码语言:txt
AI代码解释
复制
        var range = obj.offsetParent.createTextRange();
代码语言:txt
AI代码解释
复制
        range.moveToElementText(obj);
代码语言:txt
AI代码解释
复制
        range.select();
代码语言:txt
AI代码解释
复制
    } else if ($.browser.mozilla || $.browser.opera) {
代码语言:txt
AI代码解释
复制
        var selection = obj.ownerDocument.defaultView.getSelection();
代码语言:txt
AI代码解释
复制
        var range = obj.ownerDocument.createRange();
代码语言:txt
AI代码解释
复制
        range.selectNodeContents(obj);
代码语言:txt
AI代码解释
复制
        selection.removeAllRanges();
代码语言:txt
AI代码解释
复制
        selection.addRange(range);
代码语言:txt
AI代码解释
复制
    } else if ($.browser.safari) {
代码语言:txt
AI代码解释
复制
        var selection = obj.ownerDocument.defaultView.getSelection();
代码语言:txt
AI代码解释
复制
        selection.setBaseAndExtent(obj, 0, obj, 1);
代码语言:txt
AI代码解释
复制
    }
代码语言:txt
AI代码解释
复制
    return this;
代码语言:txt
AI代码解释
复制
}

我测试了IE8,Firefox,Opera,Safari,Chrome(当前版本)。我不确定它是否适用于较旧的IE版本(真诚我不在乎)。

人生的旅途

发布于 2017-12-26 08:51:31

该字符是“OGHAM SPACE MARK”,这是一个空格字符。所以代码相当于alert(2+ 40)。

我也想知道是否有更多的人物像这样的行为。

Zs类中的任何Unicode字符都是JavaScript中的空格字符,但似乎没有那么多。

但是,JavaScript也允许在标识符中使用Unicode字符,这使您可以使用有趣的变量名称ಠ_ಠ。

和开发者交流更多问题细节吧,去 写回答
相关文章
1为什么等于0.99999....
  初一看,这个等式貌似不会成立,0.9999....给人的第一感觉该是无限接近于1、但应该比 1 小。
孟船长
2019/03/19
9710
1为什么等于0.99999....
[Go疑难杂症]为什么nil不等于nil
在日常开发中,可能一不小心就会掉进 Go 语言的某些陷阱里,而本文要介绍的 nil ≠ nil 问题,便是其中一个,初看起来会让人觉得很诡异,摸不着头脑。
弗兰克的猫
2022/11/07
1.1K0
[Go疑难杂症]为什么nil不等于nil
为什么(2.55).toFixed(1)等于2.5?
这是一个很老的问题,相信很多人在工作中都遇到过,之前看到X乎上看到的,分析的很通透,所以跟大家一起分享一下。
苏南
2020/12/16
1.3K0
为什么(2.55).toFixed(1)等于2.5?
1.10乘100为什么不等于110
要从今天的微信支付调试说起,众所周知微信支付的接口,要求传入的金额数值是按分为单位的,所以都必须是大于0的整数。   所以我们一般业务的实际金额都要做乘以100的处理,例如某大妈刚在市场买了1.10元的菜,她摸了摸口袋,看了一眼诚实憨厚的大叔,已经麻利地帮她打包好菜,实在不忍心说出自己今天忘记带钱包。   大叔正打算把菜递给大妈之际,看到大妈尾头紧皱,已经失去平时要把1.10元的菜讲价到1.00元的风韵神采,便意识到事情并不简单,便默默从下方抽屉中抽出一个微信二维码递给她。   大妈心中暗喜,迅速拔出他儿子刚为她买的最新款红米手机,熟练地扫过二维码,也没有要讲价到1.00元的意思了,麻利地在微信上输入1.10元的金额,点击立即支付,输入过密码。。。   “参数错误:你输入的金额格式不正确”,看着手机弹出的提示弹窗,大妈狠狠咬了牙,又重复了一遍上述的支付动作,“参数错误:你输入的金额格式不正确”。这时大妈崩溃的用着恳求可怜的眼神看着大叔,大叔也一面无奈地轻轻将打包好的菜微微收了过来一下,空气突然安静地凝固起来。
前端小哥哥
2023/05/04
4010
0.1+0.2为什么不等于0.3
在于在JS中采用的IEEE 754的双精度标准,计算机内部存储数据的编码的时候,0.1在计算机内部根本就不是精确的0.1,而是一个有舍入误差的0.1。
用户9914333
2022/07/22
9200
0.1+0.2为什么不等于0.3
为什么0.1+0.2不等于0.3?
从小我们就知道 0.1 + 0.2=0.3。但是,在光怪陆离的计算世界中,运算方式却大相径庭。
Ai学习的老章
2019/10/22
1.8K0
为什么0.1+0.2不等于0.3?
前端面试 【JavaScript】— 0.1+0.2为什么不等于0.3?如何实现等于0.3?
计算机中用二进制来存储小数,大部分小数转成二进制之后都是无限循环的值,因此存在取舍问题,也就是精度丢失。
越陌度阡
2021/11/16
1.1K0
2的0次方为什么等于1?
计数简单来说就是数数,计数法就是数数的方法,严谨一点来说就是拿一种东西和要数的东西一一对应,只要不漏掉和不重复,那么数量就是准确的。
街角小林
2022/06/15
1.4K0
为什么 JavaScript 中 0.1+0.2 不等于 0.3 ?
在 js 中进行数学的运算时,会出现0.1+0.2=0.300000000000000004的结果,一开始认为是浮点数的二进制存储导致的精度问题,但这似乎不能很好的解释为什么在同样的存储方式下0.3+0.4=0.7可以得到正确的结果。本文主要通过浮点数的二进制存储及运算,和IEEE754下的舍入规则,解释为何会出现这种情况。
2020labs小助手
2019/10/28
2K0
100天搞定机器学习|day40-42 Tensorflow Keras识别猫狗
前文我们用keras的Sequential 模型实现mnist手写数字识别,准确率0.9713。今天我们完成day40-42的课程,实现猫、狗的识别。
Ai学习的老章
2019/08/09
8120
100天搞定机器学习|day40-42 Tensorflow Keras识别猫狗
为什么高斯白噪声的平均功率等于方差?
功率和方差这两个概念,一个是表示信号的强度,一个是表示随机信号的一个统计量,为什么高斯白噪声的平均功率会等于它的方差呢?
猫叔Rex
2021/01/26
5.3K0
面试官:值为 nil 为什么不等于 nil ?
当我们从 interface 里面把对象取出来后,使用 if 进行判断,他不单单的比较的是值,还有类型。
小锟哥哥
2022/12/05
5690
面试官:值为 nil 为什么不等于 nil ?
两个Integer对象比较大小,为什么100等于100,1000不等于1000 ?
前几天,有位小伙伴向我反馈,在维护代码过程中,出现了一个莫名其妙的问题。明明上线之后程序跑得还好好的,可程序上线运行一段时间之后,所有,代码没有做任何修改,发 cxccccc现运行结果和期望值恰好相反。因为涉及到金额造成了比较大的损失,最后,这位小伙伴还被公司辞退了,大家可以来评论一下,这位小伙伴背的这个锅值不值?
Tom弹架构
2022/08/22
8630
两个Integer对象比较大小,为什么100等于100,1000不等于1000 ?
mybatis中大于等于小于等于的写法
个人博客:https://suveng.github.io/blog/​​​​​​​
suveng
2019/09/18
4.1K0
无效学习 VS 有效学习 (2+)
比如,我遇到的问题是“求最大转矩T”,我在思考,为什么这个转矩不能太大?因为力太大了,螺栓会被剪断。
程序媛淼淼
2022/09/01
1800
数据分析中,为什么1+1不等于2?
本文首发于腾讯内部知识分享平台「乐问KM」、腾讯官方公众号「腾讯大讲堂」《短视频之数据分析:为什么1+1不等于2?》,作者日后创建个人公众号,以转载形式发布本文。
刘健阁
2021/08/13
9100
数据分析中,为什么1+1不等于2?
知识约等于财富,但离等于财富很有距离
前段时间,极客时间的人找我,说极客时间4周年了,能不能写500字给极客时间的读者们,表达一下作为专栏作者这几年来的新感受。
用户1564362
2021/10/15
8360
Typescript 2+迷你书 :从入门到不放弃
众所周知:JS中有这么几种类型的数据: Symbol,boolean,Number,Object[Array在js中也属于对象],undefind,null,String;
CRPER
2018/08/28
9060
【机器视觉与图像处理】基于MATLAB+Hough的圆检测
本次文章,没有太多好写的,就是最近做的一个机器视觉的课程设计作业,是要做一个流水线的生产线建模以及对于产品的检测识别,我个人承包了圆心半径检测的内容,熬了好几天,终于找到了一个好的算法可以比较迅速准确的找到圆了。天不负我!!
用户1687088
2018/07/24
2.8K0
【机器视觉与图像处理】基于MATLAB+Hough的圆检测
DevOps 不等于 CI,更不等于 CI /CD
作者:汪照辉 王作敬 中国银河证券股份有限公司 信息技术部IT研发中心 原题:DevOps实施探索 大多时候,基本上概念从国外传进来,我们也跟着炒,概念满天飞。曾经也是不懂装懂,自以为懂,不过还好逐渐
DevOps时代
2018/04/04
3.4K0
DevOps 不等于 CI,更不等于 CI /CD

相似问题

40.嵌入式操作系统中,(40)不属于任务间同步机制?

154

42. 若对某一寄存器某几位清零,可用一条指令(42)处理。 A.AND B.OR C.NOT D?

033

Tesla M40 运行tensorflow 十分缓慢?

0832

linux里java 42小时左右莫名其妙死掉?

026

42.DPCM编码方法中,如果没有包含(42)环节则属于无损编码。 A. 量化 B. 反馈 C. 预测 D. 差分?

013
相关问答用户
某公司 | 程序员擅长1个领域
腾讯云TDP | 先锋会员擅长2个领域
擅长5个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档