JavaScript 获取地址栏参数
1.
function a() { console.log(this); } a.call(null);
window
如果第一个参数传入的对象调用者是null或者undefined的话,call方法将把全局对象(也就是window)作为this的值。所以,不管你什么时候传入null,其this都是全局对象window,
所以该题目可以理解成如下代码:
function a() { console.log(this); } a.call(window);
获取地址栏参数,并将其转换成一个对象
function getArgs() { var args = new Object(); var query = location.search.substring(1); query = query.replace(/\+/g, " "); var pairs = query.split("&"); // Break at ampersand for (var i = 0; i < pairs.length; i++) { var pos = pairs[i].indexOf('='); // Look for "name=value" if (pos == -1) continue; // If not found, skip var argname = pairs[i].substring(0, pos); // Extract the name var value = pairs[i].substring(pos + 1); // Extract the value value = decodeURIComponent(value); // Decode it, if needed args[argname] = value; // Store as a property } return args; }
var data=getArgs();
一个地址获取域名数组
var getHost = function (url) { var prev = ""; var result = []; var index = url.indexOf('https'); if (index > -1) { url = url.replace("https://", ""); prev = "https://"; } var index2 = url.indexOf("http"); if (index2 > -1) { url = url.replace("http://", ""); prev = "http://"; } var index3 = url.indexOf('/'); var host = url.substring(0, index3); result.push(host); result.push(prev + host); return result; }
var url="https://pgw.grapay.net/Test/index.htm";
var result=getHost(url);
result[0]:pgw.grapay.net
result[1]:https://pgw.grapay.net
3.方法的声明
console.log(add); function add(x) { return x + 1; } console.log(add); function add(x) { return x + 3; } console.log(add); console.log(fun); var fun = function (x) { return x + 1; } console.log(fun); var fun = function (x) { return x + 3; } console.log(fun);
function add(x) { return x + 1; } console.log(add(1)); function add(x) { return x + 3; } console.log(add(1)); var fun = function (x) { return x + 1; } console.log(fun(1)); var fun = function (x) { return x + 3; } console.log(fun(1));
可以看出这两种声明的不同
4.关于(,,,,,,)这样的返回结果
var f = (function f(){ return "1"; }, function g(){ return 2; })(); typeof f;
"number" 逗号操作符的使用可以很混淆,但这段说明它的行为: var x = (1, 2, 3); x; x的值是3,这表明,当你有一系列的组合在一起,并由逗号分隔的表达式,它们从左到右进行计算,但只有最后一个表达式的结果保存。由于同样的原因,这个问题可以改写为减少混乱: var f = (function g(){ return 2; })(); typeof f; 关于逗号表达式: 原文: http://www.2ality.com/2012/09/expressions-vs-statements.html 译文: http://www.cnblogs.com/ziyunfei/archive/2012/09/16/2687589.html
5.delete
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)