小编mit*_*221的帖子

如何在不使用原型的情况下链接函数

我有一堆有用的功能,这些功能是我一生中收集的.

function one(num){
    return num+1;
}

function two(num){
    return num+2;
}
Run Code Online (Sandbox Code Playgroud)

我可以打电话给他们 two(two(one(5)))

但我更愿意使用 (5).one().two().two()

如何在不使用原型的情况下实现此目的?

我试图看看下划线链是如何工作的,但是他们的代码太强烈而无法理解它

javascript function method-chaining

16
推荐指数
2
解决办法
1万
查看次数

使用N个元素创建一个没有旧的'new Array(N)'的数组的正确方法?

每当我使用数组时,我总是使用该[]样式,但是,当我想创建一个具有固定数量的元素的数组时new Array(N)(我不知道其他任何方式)

我认为这不是什么大问题,直到我读到这些强烈的话:

任何人这样做,使用"new Array()"而不是"[]",或"new Object()"而不是"{}"需要重新学习JavaScript.

我真的想避免写错代码.有谁介意告诉我正确的方向去?

javascript arrays

9
推荐指数
1
解决办法
2119
查看次数

Crossbrowser"inArray"函数(不带jQuery)

我不知道糟糕的crossbrowser兼容性array.indexOf().但是现在我,我需要找到一种方法来实现相同的东西,但不使用以前的方法.

我尝试了谷歌搜索一段时间,但没有找到真正有说服力的答案.现在,我正在使用循环(但这很慢,我相信有更好的方法)

附注:

  • 我不能使用jQuery或任何其他库/框架.
  • 它不一定需要返回索引(简单的true/false就可以了)

我认为没有必要共享我的代码,因为你们都知道数组循环检查是什么样的(加上它会降低你的智商)

javascript arrays

6
推荐指数
1
解决办法
870
查看次数

重变量应该超出函数吗?

我目前有一个运行大约200次的功能.

功能看起来像这样:

function GetB(av,bol){
var bxes=[
["11","12","13","21","22","23","31","32","33"],
["14","15","16","24","25","26","34","35","36"],
["17","18","19","27","28","29","37","38","39"],
["41","42","43","51","52","53","61","62","63"],
["44","45","46","54","55","56","64","65","66"],
["47","48","49","57","58","59","67","68","69"],
["71","72","73","81","82","83","91","92","93"],
["74","75","76","84","85","86","94","95","96"],
["77","78","79","87","88","89","97","98","99"]
];

//code
}
Run Code Online (Sandbox Code Playgroud)

我的第一个问题是这个数组正在减慢一切因为我认为它每次都重写数组bxes(或类似的东西)

这个bxes数组永远不会被修改,我不介意把它变成一个全局数组.

  • 我需要担心重写的事吗?(或者浏览器是否会跟踪它是否被修改过,如果不是,它将不会重写它)

javascript performance

5
推荐指数
1
解决办法
112
查看次数

5
推荐指数
2
解决办法
628
查看次数

为什么jQuery inArray太慢了?

我运行了一些测试,数据表明jQuery inArray()比简单的循环慢得多.

并且array.indexOf()甚至没有进行测试,因为我之前做过其他测试,而且表现更差.

  • 为什么它要慢得多?
  • 他们为什么不使用简单的循环?
  • 我有什么东西在监督吗?

必须有充分的理由不使用它:

for(var i=0,len=arr.length,rtn=-1;i<len;i++){
    if(arr[i]==="arritem"){
        rtn=i;
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

javascript performance jquery loops

3
推荐指数
1
解决办法
1712
查看次数

为什么我不能制作这个工作代码的jsFiddle?

我的代码完全可以在我的计算机上运行,​​在我的所有浏览器上(包括ie),但我无法让它在jsFiddle运行.

问题似乎是:

    window.onload=function(){
        document.body.innerHTML+=brd+log;
    }
Run Code Online (Sandbox Code Playgroud)

但无论有没有,我都试过了window.onload.我完全无能为力,我开始失去所有的希望

CSS(可选):

        *{margin:0;padding:0;}
        #brd{margin:15px auto;}
        #brd,#brd td,#log{border:1px solid #000;}
        #brd td{height:47px;width:45px;text-align:center;font-size:30px;}
        #brd span{font-size:12px;}
        #log{margin:15px auto;padding:20px;width:385px;max-height:150px;overflow:auto;background:#F0F0F0;color:#000;}
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

        var i,sdk,rem,log,perf,brd,bxes=[["11","12","13","21","22","23","31","32","33"],["14","15","16","24","25","26","34","35","36"],["17","18","19","27","28","29","37","38","39"],["41","42","43","51","52","53","61","62","63"],["44","45","46","54","55","56","64","65","66"],["47","48","49","57","58","59","67","68","69"],["71","72","73","81","82","83","91","92","93"],["74","75","76","84","85","86","94","95","96"],["77","78","79","87","88","89","97","98","99"]];

        /*Array Find*/
        function arrFind(fnd,frm,bol){
            var ii,len,rtn=-1;

            for(ii=0,len=frm.length;ii<len;ii++){
                if(frm[ii]==fnd){
                    rtn=ii;
                    break;
                }
            }
            return bol?rtn>-1:rtn;
        }

        /*To RC*/
        function toRC(val){
            var ii,len,aa=[];

            val=val.split(",");

            for(ii=0,len=val.length;ii<len;ii++){
                aa.push(Math.ceil((parseInt(val[ii])+1)/9)+""+((parseInt(val[ii])%9)+1));
            }

            return aa.join(",");
        }

        /*To AV*/
        function toAV(rc){
            var ii,len,aa=[];

            rc=rc.split(",");

            for(ii=0,len=rc.length;ii<len;ii++){
                aa.push((((parseInt(rc[ii].charAt(0))-1)*9)+(parseInt(rc[ii].charAt(1))-1))+"");
            }

            return aa.join(",");
        }

        /*Get Box*/
        function getBox(av,bol){
            var ii,jj,len,ss,zz,aa=[];

            if(!bol){
                av=toRC(av);
            }

            av=av.split(","); …
Run Code Online (Sandbox Code Playgroud)

javascript jsfiddle

3
推荐指数
2
解决办法
2884
查看次数

为什么我应该在我自己的自定义'array.indexOf'中使用'i in array'?

我见过很多次这样的事情:

function customArrayIndexOf(item, array){
    for (var i = 0, l = array.length; i < l; i++) {
        if (i in array && array[i] === item) return i;
    }
    return -1;
}
Run Code Online (Sandbox Code Playgroud)

但是,我不确定为什么i in array需要.

我有三个问题:

  • 它在做什么?
  • 有必要吗?
  • 没有它会失败吗?

javascript arrays indexof

2
推荐指数
1
解决办法
173
查看次数

拆分时无法将string []隐式转换为字符串

我是c#的新手,我不明白为什么这不起作用.我想拆分以前拆分的字符串.

我的代码如下:

int i;
string s;
string[] temp, temp2;

Console.WriteLine("write 'a-a,b-b,c-c,d-d'";
s = Console.ReadLine();
temp = s.Split(',');

for (i = 0; i < temp.Length; i++)
    temp2[i] = temp[i].Split('-');
Run Code Online (Sandbox Code Playgroud)

我收到以下错误 Cannot implicitly convert type 'string[]' to 'string

我想结束:

temp = {a-a , b-b , c-c , d-d};
temp2 = {{a,a},{b,b},{c,c},{d,d}};
Run Code Online (Sandbox Code Playgroud)

c#

1
推荐指数
1
解决办法
2万
查看次数

没有严格的比较,哪些值被评估为真和假?

我希望得到一个列表,列出所有要评估的值,true或者false使用差等式检查!=,==甚至是if()

我有一个列表,我收集了多年,但它与我的PC死了

javascript evaluate

1
推荐指数
1
解决办法
2842
查看次数

在此函数中,哪些值将返回0?

以下函数使用短路操作符0作为默认值返回:

function custNumParse(str){
    return str*1||0;
}
Run Code Online (Sandbox Code Playgroud)

我不确定这将返回第二个(我的意思是,我知道它将在str*1无法评估时true),但我不确定在乘以时哪些输入可以产生该输出1.

我知道虚假的价值观0, "", false, null, undefined, NaN,但这对我没有多大帮助.

换句话说,当我将这个函数与对象或布尔值等一起使用时,我会发生什么事情.我知道我可以测试它们,但我确信有一个更容易的方法去

关于什么是最合适的方法找到这些家伙而不测试它们的任何想法?

javascript

1
推荐指数
1
解决办法
109
查看次数

Switch-Case不能这样工作吗?

我正在尝试将JavaScript开关转换为C#.

我收到了错误 Error 3 Cannot implicitly convert type 'bool' to 'int'

        switch (numero)
        {
            case (numero > -1 && numero < 16):
                rtn = list1[numero] + " " + str2;
                if (primerDigito != 1)
                {
                    rtn += "s";
                }
                break;
            case (numero > 15 && numero < 30):
                if (numero != 20)
                {
                    rtn = list2[primerDigito] + list1[segundoDigito];
                }
                else
                {
                    rtn = "veinte";
                }
                rtn += " " + str2 + "s";
                break;
            case (numero > 29 && numero …
Run Code Online (Sandbox Code Playgroud)

c# compiler-errors

-2
推荐指数
1
解决办法
1013
查看次数