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

http://www.cnblogs.com/aaronjs/p/3172112.html#2832944

posted @   hongdada  阅读(320)  评论(0编辑  收藏  举报
编辑推荐:
· 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)
点击右上角即可分享
微信分享提示