问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

var fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/; 这句是什么意思

发布网友 发布时间:2022-04-30 07:19

我来回答

1个回答

热心网友 时间:2023-10-21 04:32

正则匹配的test函数

在John Resig 那篇关于在JavaScript中实现简单继承的文章中,有这样一段代码
var fnTest = /xyz/.test(function(){xyz;}) ? /b_superb/ : /.*/;对于其中正则表达式匹配函数test的用法,我很是迷惑:
/xyz/.test(function(){xyz;})我查阅了Mozilla developer center中关于test函数的描述:
Executes the search for a match between a regular expression and a specified string. Returns true or false.
字符串中是否有匹配正则表达式的子字符串。返回true或false。
其语法格式:
regexp.test([str])注意这里的参数是字符串,根本没有提到test函数的参数可以是函数的说法。
我试着修改这段奇怪的代码,得到了一些运行结果:

复制代码代码如下:

/xyz/.test("xyz"); // true
/xyz/.test(function(){"xyz";}); // false
/xyz/.test(function(){return "xyz";}); // true
/xyz/.test(function(){return xyz;}); // true
/xyz/.test(function(){return axyz;}); // true
/xyz/.test(function(){return "axyz";}); // true
/xyz/.test(function(){return "xayz";}); // false怎么回事?

华丽的分割线
=======================================
我终于知道了,却原来在test内部进行了类型转换,下面代码:

复制代码代码如下:

/xyz/.test(function(){xyz;});

等价于:

复制代码代码如下:

/xyz/.test((function(){xyz;}).toString());

又等价于:

复制代码代码如下:

/xyz/.test("function(){xyz;}");

那么为什么下面的代码返回false呢?

复制代码代码如下:

/xyz/.test(function(){"xyz";});

我们执行下这行代码就知道了:

复制代码代码如下:

// 这行代码的执行结果是:"function(){}"
(function(){"xyz";}).toString();

所以我们可以写出更加诡异的代码来迷惑大家了

复制代码代码如下:

/function/.test(function(){}); // true
// b 表示文字边界(对英文而言的)
/b_superb/.test(function(){this._super();}); // true追问(function(){xyz;}).toString()
应该是 function(){xyz;} 和前面的正则/xyz/ 应该不匹配啊 直接返回后面的。

我是对着个不太理解
var fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;
fnTest.test(prop[name]);

热心网友 时间:2023-10-21 04:32

正则匹配的test函数

在John Resig 那篇关于在JavaScript中实现简单继承的文章中,有这样一段代码
var fnTest = /xyz/.test(function(){xyz;}) ? /b_superb/ : /.*/;对于其中正则表达式匹配函数test的用法,我很是迷惑:
/xyz/.test(function(){xyz;})我查阅了Mozilla developer center中关于test函数的描述:
Executes the search for a match between a regular expression and a specified string. Returns true or false.
字符串中是否有匹配正则表达式的子字符串。返回true或false。
其语法格式:
regexp.test([str])注意这里的参数是字符串,根本没有提到test函数的参数可以是函数的说法。
我试着修改这段奇怪的代码,得到了一些运行结果:

复制代码代码如下:

/xyz/.test("xyz"); // true
/xyz/.test(function(){"xyz";}); // false
/xyz/.test(function(){return "xyz";}); // true
/xyz/.test(function(){return xyz;}); // true
/xyz/.test(function(){return axyz;}); // true
/xyz/.test(function(){return "axyz";}); // true
/xyz/.test(function(){return "xayz";}); // false怎么回事?

华丽的分割线
=======================================
我终于知道了,却原来在test内部进行了类型转换,下面代码:

复制代码代码如下:

/xyz/.test(function(){xyz;});

等价于:

复制代码代码如下:

/xyz/.test((function(){xyz;}).toString());

又等价于:

复制代码代码如下:

/xyz/.test("function(){xyz;}");

那么为什么下面的代码返回false呢?

复制代码代码如下:

/xyz/.test(function(){"xyz";});

我们执行下这行代码就知道了:

复制代码代码如下:

// 这行代码的执行结果是:"function(){}"
(function(){"xyz";}).toString();

所以我们可以写出更加诡异的代码来迷惑大家了

复制代码代码如下:

/function/.test(function(){}); // true
// b 表示文字边界(对英文而言的)
/b_superb/.test(function(){this._super();}); // true追问(function(){xyz;}).toString()
应该是 function(){xyz;} 和前面的正则/xyz/ 应该不匹配啊 直接返回后面的。

我是对着个不太理解
var fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;
fnTest.test(prop[name]);

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
什么网址更新火影忍者集数最快 如果你跟男朋友分手了,他的回答是顺其自然这是什么意思,我该怎么办... 一个女人像男人提分手男人说顺其自然是什么意思 上线两年《X-HERO》如何做到登顶多个国家榜首的? 龙武游戏怎么样费钱吗 Q1游戏公司产品 中国现有什么银行 x.最近六个月的通话记录? 爱奇艺会员哪里买便宜 爱奇艺会员免费领取 iphone4 怎样删除原来的旧凯立德地图 “我的世界”里的坐标XYZ是表示什么? 狗能不能吃麻糖 运动会的班级解说词,在线等,100字左右~ 50个字的班级运动会解说词 吃麻糖会发胖吗 数学难题 谁能帮帮设a,b,c,x,y,z∈R...求xyz/abc值 运动会入场时班级解说词怎么写? 哺乳期能吃麻糖吗 请问怎样用文言文写运动会上的班级入场串词呢?100字以内 麻糖有什么作用? 复制到浏览器打开:https://fj116.xyz/?tg=984225 怎么打不开? 常喝奶茶粉对人体有害吗? 求运动会口号和班级介绍解说词 怀孕可以吃麻糖吗 .top/.xyz/.party/这些域名后缀的域名可以正常解析吗? 玉米麻糖吃了对身体有什么好处呢? 汉语拼音uvw.xyz怎么发音 校运会的班级解说词 360浏览器查历史记录的时候能查时间么? 二年级参加运动会的班级解说词怎么写 麻糖的作用 这黑枸杞泡的水是真的还是假的? 游戏王:想问一下这两张卡上的也能用......xyz召唤是什么意思?是指能用一个炮车/霍普超量吗? 吃麻糖会嘴巴干燥想喝水是怎么回事 设X,Y,Z是非零实数,若a=x/|x|+y/|y|+z/|z|+xyz/|xyz|,则由a的值组成的集合的元素个数有_个? 振动测试钟2.5G/10~100Hz/2分钟,XYZ方向/各一小时.是什么意思?每分钟转速应该是多少? http://hi.baidu.com/126xyz 这种网页百度会收录吗 红薯麻糖对身体没有什么好处吗? 已知x.y.z是三个互不相等的实数,且x+1/y=y+1/z=z+1/x,求证xyz的绝对值=1 甲乙丙三人xyz,共同完成70次x/z=z/y 麻糖棍吃了有什么好处 求穿越之兰柯一梦TXT全文 xyz_19911005@126.com 腊月23为什么要吃麻糖? 帮忙解释一下,JDK中的demo里面的applets.html的第一个例子,xyzapp.java 餐馆生意不好怎么办?做新菜品有用吗? 金融考试搜题用什么软件最好 有没有那随时随地在线问老师题的软件? 小儿疝气了,可以通过中医治愈吗 春季菜,怎样搞定一抹撩人促食欲的粉色? 婴儿疝气可以用中医学治疗吗?