百分浏览器论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 150|回复: 2

[求助] [已解决]提取搜索关键字问题

[复制链接]

37

主题

299

回帖

2081

积分

金牌会员

Rank: 6Rank: 6

积分
2081
发表于 2024-5-19 11:54:25 | 显示全部楼层 |阅读模式
本帖最后由 coult3 于 2024-5-19 22:12 编辑

打开
https://www.centbrowser.net/zh-c ... hsubmit=yes&kw=test 就是在本论坛搜索框输入 test 后回车的页面
在此页面f12打开控制台,输入以下命令提取关键字

  1. keyword = new URL(location.href).searchParams.get('kw');
复制代码
输出为test

  1. const keyword = new URL(location.href).searchParams.get('kw');
复制代码
加了const/var/let后,输出为undefined ,为什么得不到变量值了?

回复

使用道具 举报

7

主题

6776

回帖

1万

积分

超级版主

(^^ゞ

Rank: 8Rank: 8

积分
19242
发表于 2024-5-19 19:41:52 | 显示全部楼层
因为在控制台中执行代码时,打印的其实是 eval() 的结果。而 eval() 的返回值是语句的完成值(completion value)。对于赋值操作(如:"keyword = new URL(location.href).searchParams.get('kw');"),完成值是赋值的结果;但对于声明操作(如:"const keyword = new URL(location.href).searchParams.get('kw');"),其完成值为 undefined。
¯\(°_o)/¯
回复

使用道具 举报

37

主题

299

回帖

2081

积分

金牌会员

Rank: 6Rank: 6

积分
2081
 楼主| 发表于 2024-5-19 22:05:20 | 显示全部楼层
S8F8ry 发表于 2024-5-19 19:41
因为在控制台中执行代码时,打印的其实是 eval() 的结果。而 eval() 的返回值是语句的完成值(completion va ...

多谢解惑
【const keyword = new URL(location.href).searchParams.get('kw');】这本身是一个语句,只是声明了一个变量,没有任何返回值,所以返回undefined

参考:
冷知识,Chrome 控制台console.log()为什么返回undefined
浏览器控制台输出 undefined 与 eval()
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|百分浏览器论坛

GMT+8, 2024-6-2 19:50 , Processed in 0.041175 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表