为什么循环数组比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)
除了创建一个功能,有检查的值是一个较短的方式undefined,null或者false只在JavaScript?
下面的if语句相当于if(val===null && val===undefined val===false)
代码工作正常,我正在寻找更短的等价物.
if(val==null || val===false){
;
}
Run Code Online (Sandbox Code Playgroud)
val==null当val=undefined或时,以上评估为真val=null.
我在考虑使用按位运算符或其他一些技巧.
我不是在问这是否合适:
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)
如果你认为上述内容是不道德的,为什么他们甚至会首先实现这个功能呢?
我想运行一组通常在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) 在JavaScript undefined中可以重新分配,因此通常建议创建一个自执行函数,以确保undefined实际上是未定义的.作为一种替代方案null,undefined肯定==是其他任何价值相当于null/undefined?
基本上你可以安全地替换这个:
(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
而 …
由于原始问题的范围很广,问题的范围已经归结为:
越来越熟悉git,我已经开始真正看到版本控制,推/拉,提交,分支,合并等的强大功能......
你怎么能用git视频编辑或音乐编辑来实现这个软件?
虽然我自己不是视频或音乐编辑器,但朋友们通常会"不断"地"保存" - >"另存为".创建文件名,如:
最终,你开始遇到git试图解决的同样问题.
合并2个视频几乎是不可能的,并确定您当前的最新版本变得疯狂.
假设可以实现此功能,我将如何进行此操作?是否已经存在其他项目,目标是实现视频编辑/音乐编辑等概念?
我自己对视频编码或视频编辑了解不多,可以git使用Adobe Photoshop文件吗?
虽然这不仅与编程有关,但概念的实现是,并且考虑git到程序员的积极使用,这可以说是获得这个问题的相关答案的最佳位置.
在所有浏览器中,以下哪个表达式总是从左到右(特别是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) 是否有任何插件或C库语法突出显示英语语言?
考虑到解析整个英语并不简单,只需要对名词,动词,代词,介词等进行语法突出显示就可以了.
根据我的理解,你可以在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看起来很奇怪.可维护性和标准很重要.
单击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 ×6
null ×2
undefined ×2
bash ×1
c# ×1
ecmascript-5 ×1
evaluation ×1
git ×1
if-statement ×1
performance ×1
tcpclient ×1
telnet ×1
video ×1