小编Lim*_*ime的帖子

为什么循环数组比JavaScript的本机`indexOf`快得多?

为什么循环数组比JavaScript本地更快indexOf?是否有错误或我不考虑的事情?我希望原生实现会更快.

                For Loop        While Loop      indexOf
Chrome 10.0     50,948,997      111,272,979     12,807,549
Firefox 3.6     9,308,421       62,184,430      2,089,243
Opera 11.10     11,756,258      49,118,462      2,335,347   
Run Code Online (Sandbox Code Playgroud)

http://jsben.ch/#/xm2BV

javascript performance

52
推荐指数
4
解决办法
4万
查看次数

JavaScript检查值是否仅为undefined,null或false

除了创建一个功能,有检查的值是一个较短的方式undefined,null或者false只在JavaScript?

下面的if语句相当于if(val===null && val===undefined val===false) 代码工作正常,我正在寻找更短的等价物.

if(val==null || val===false){
  ;
}
Run Code Online (Sandbox Code Playgroud)

val==nullval=undefined或时,以上评估为真val=null.

我在考虑使用按位运算符或其他一些技巧.

javascript null undefined

40
推荐指数
3
解决办法
13万
查看次数

扩展Object.prototype JavaScript

我不是在问这是否合适:

Object.prototype.method = function(){};
Run Code Online (Sandbox Code Playgroud)

几乎每个人都认为这是邪恶的,因为它会混乱for(var i in obj).

真正的问题

忽略

  • 不称职的浏览器(不支持的浏览器Object.defineProperty)
  • 财产碰撞或覆盖的可能性

假设你有一些非常有用的方法,这被认为是错误的/不道德的吗?

Object.defineProperty(Object.prototype, 'methodOnSteriods',{
  value: function(){ /* Makes breakfast, solves world peace, takes out trash */ },
  writable: true,
  configurable: true,
  enumerable: false
});
Run Code Online (Sandbox Code Playgroud)

如果你认为上述内容是不道德的,为什么他们甚至会首先实现这个功能呢?

javascript ecmascript-5

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

Windows自动化telnet

我想运行一组通常在telnet中运行的命令(来自c#).

例如,我想运行以下内容

using System;
using System.Diagnostics;

namespace InteractWithConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            ProcessStartInfo cmdStartInfo = new ProcessStartInfo();
            cmdStartInfo.FileName = @"C:\Windows\System32\cmd.exe";
            cmdStartInfo.RedirectStandardOutput = true;
            cmdStartInfo.RedirectStandardError = true;
            cmdStartInfo.RedirectStandardInput = true;
            cmdStartInfo.UseShellExecute = false;
            cmdStartInfo.CreateNoWindow = true;

            Process cmdProcess = new Process();
            cmdProcess.StartInfo = cmdStartInfo;
            cmdProcess.ErrorDataReceived += cmd_Error;
            cmdProcess.OutputDataReceived += cmd_DataReceived;
            cmdProcess.EnableRaisingEvents = true;
            cmdProcess.Start();
            cmdProcess.BeginOutputReadLine();
            cmdProcess.BeginErrorReadLine();

            cmdProcess.StandardInput.WriteLine("telnet telehack.com");
            int milliseconds = 2000;
            System.Threading.Thread.Sleep(milliseconds);
            cmdProcess.StandardInput.WriteLine("exit");

            cmdProcess.StandardInput.WriteLine("exit");
            cmdProcess.WaitForExit();
        }

        static void cmd_DataReceived(object sender, DataReceivedEventArgs e)
        {
            Console.WriteLine(e.Data);
        } …
Run Code Online (Sandbox Code Playgroud)

c# telnet tcpclient

17
推荐指数
2
解决办法
2145
查看次数

JavaScript undefined替换为null

在JavaScript undefined中可以重新分配,因此通常建议创建一个自执行函数,以确保undefined实际上是未定义的.作为一种替代方案null,undefined肯定==是其他任何价值相当于null/undefined

TLDR

基本上你可以安全地替换这个:

(function(undefined){

   window.f = function(obj){
     if(obj===undefined || obj===null ){
       alert('value is undefined or null');
     }
   }

})();
Run Code Online (Sandbox Code Playgroud)

有:

window.f = function(obj){
  if(obj==null){
    alert('value is undefined or null');
  }
}
Run Code Online (Sandbox Code Playgroud)

如果以上是100%安全的话,为什么JavaScript社区/库undefined完全没有丢弃并使用较短的x == null条件来同时检查两个null/ undefined

编辑:

我从来没有见过某人真正代表"未定义"vs的"未知价值" null?我从未见过这种情况,这也是我最初提出这个问题的原因.它似乎是两个令人难以置信的混淆值,从未在其原始意图中使用.标准化所有内容以进行比较obj==null将有利于大小并避免重新分配的任何问题.一切都会继续发挥作用

var obj={};
obj.nonExistantProperty==null // true

var x;
ix==null // true

function(obj){
  obj==null // true
}
Run Code Online (Sandbox Code Playgroud)

此规则的一个例外似乎是在转换undefined/ null到整数时.这是一个相当年龄的情况,但绝对应该注意.

+(null)==0 而 …

javascript null undefined

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

用于视频/音乐编辑的开源版本控制项目

由于原始问题的范围很广,问题的范围已经归结为:

哪些项目已经存在,允许对视频/音乐/图片编辑进行版本控制跟踪?


越来越熟悉git,我已经开始真正看到版本控制,推/拉,提交,分支,合并等的强大功能......

你怎么能用git视频编辑或音乐编辑来实现这个软件?

虽然我自己不是视频或音乐编辑器,但朋友们通常会"不断"地"保存" - >"另存为".创建文件名,如:

  1. foo1
  2. foo1吧
  3. foo2的酒吧,FOO

最终,你开始遇到git试图解决的同样问题.

合并2个视频几乎是不可能的,并确定您当前的最新版本变得疯狂.

假设可以实现此功能,我将如何进行此操作?是否已经存在其他项目,目标是实现视频编辑/音乐编辑等概念?

我自己对视频编码或视频编辑了解不多,可以git使用Adobe Photoshop文件吗?


虽然这不仅与编程有关,但概念的实现是,并且考虑git到程序员的积极使用,这可以说是获得这个问题的相关答案的最佳位置.

git video

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

运营商的Javascript评估顺序

在所有浏览器中,以下哪个表达式总是从左到右(特别是IE6 +,F3 +,Opera 9 +,Chrome)?例如,窗口应时刻警醒first function然后second function.在C中,他们总是建议不要依赖于表达式评估的顺序.对于JavaScript是一样的还是运算符优先级一致?

function first(){
    alert('first function');
    return 0;
}
function second(){
    alert('second function');
    return 23;
}
first() + second();
first() - second();
first() * second();
first() / second();
first() < second();
first() > second();
Run Code Online (Sandbox Code Playgroud)

使用mozilla看起来功能评估应该在所有浏览器中都是一致的,但显然并不总是遵循标准.

测试

在browsershots.org上进行一些测试后,所有浏览器都会遵循该标准.
通常异常是valueOf在javascript中依赖方法时. ValueOf在谷歌浏览器的特定情况下肯定会被称为倒退.

// The following alerts second then first in google chrome
first.valueOf = function(){alert('first');};
second.valueOf = function(){alert('second');};
first > second;
Run Code Online (Sandbox Code Playgroud)

javascript evaluation

8
推荐指数
2
解决办法
3856
查看次数

语法突出英语

是否有任何插件或C库语法突出显示英语语言?

考虑到解析整个英语并不简单,只需要对名词,动词,代词,介词等进行语法突出显示就可以了.

language-agnostic syntax-highlighting

8
推荐指数
0
解决办法
829
查看次数

Bash c风格if语句和样式技巧

根据我的理解,你可以在bash中使用C-style for和while循环.

LIMIT=10

for ((a=1; a <= LIMIT ; a++))  # Double parentheses, and "LIMIT" with no "$".
do
  echo -n "$a "
done                           # A construct borrowed from 'ksh93'.
Run Code Online (Sandbox Code Playgroud)

甚至是三元运营商.

(( var0 = var1<98?9:21 ))
Run Code Online (Sandbox Code Playgroud)

你会怎么做这个if声明?

另外他们为什么不在C中实现大括号呢?什么是使用这些关键字,如逻辑done,do,if,和fi?我将编写一些脚本,但bash看起来非常不同.

有没有任何bash样式技术或bash替代品/插件?我想遵循标准,但来自C,Java和PHP背景bash看起来很奇怪.可维护性和标准很重要.

bash if-statement

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

Google Chrome Javascript Link Bug

单击Google Chrome中的链接时,焦点事件无法触发.所有其他浏览器都会触发链接的焦点事件.

<a href=# onfocus="console.log('focus')">Link</a>
Run Code Online (Sandbox Code Playgroud)

我不想把这个事件附在onmousedown上,而是onfocus.

任何人都有一个解决方法的想法.

编辑:

我肯定会认为这是一个错误,因为所有其他可聚焦元素都会引发关注点击.

即使是具有tabindex触发器的非焦点元素也专注于谷歌浏览器中的点击.

<div tabindex="-1" onfocus="console.log('focus')">div</div>
Run Code Online (Sandbox Code Playgroud)

我无法附加到两者click,focus因为然后onclick,其他浏览器会调用该函数两次.我无法检测到这个功能,因为它需要用户交互,我不会做用户代理字符串检测,因为它错了.

使用这个HTML:

<a href=# onfocus="console.log('focus')" onmousedown="console.log('mousedown')">Link</a>
Run Code Online (Sandbox Code Playgroud)

它们是否可以使第二个onmousedown调用无效,以防止在非谷歌浏览器中调用该函数两次.

编辑2:

经过一些进一步的测试<input type=radio>也无法在谷歌浏览器中调用焦点.为什么世界上有像这样的谷歌浏览器,而Opera,IE和Firefox都可以.令人疯狂的是,当我在Android设备上试用它时,移动webkit浏览器甚至会引发对链接的关注.

javascript google-chrome

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