我现在正在开发一个应用程序,并放置一个全局isDebug开关.我想换行console.log以方便使用.
//isDebug controls the entire site.
var isDebug = true;
//debug.js
function debug(msg, level){
var Global = this;
if(!(Global.isDebug && Global.console && Global.console.log)){
return;
}
level = level||'info';
Global.console.log(level + ': '+ msg);
}
//main.js
debug('Here is a msg.');
Run Code Online (Sandbox Code Playgroud)
然后我在Firefox控制台中得到了这个结果.
info: Here is a msg. debug.js (line 8)
Run Code Online (Sandbox Code Playgroud)
如果我想用debug()被调用的行号记录,info: Here is a msg. main.js (line 2)怎么办?
在这里,我发布了一个演示http://jsfiddle.net/LxYMv/1/.
正如你所看到的那样<body>获得margin-top:距离顶部div 10px,因此<html>黑色背景泄露出来.这是否意味着我不能给顶级div一个积极的优势?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style>
html{color:#000;background:#FFF}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,select,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,button,caption,cite,code,dfn,em,input,optgroup,option,select,strong,textarea,th,var{font:inherit}del,ins{text-decoration:none}li{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}q:before,q:after{content:''}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:baseline}sub{vertical-align:baseline}legend{color:#000}
html{background:black}
body{background:white}
</style>
</head>
<body>
<div style="margin-top:10px;background:red;height:100px">Here the top div begins</div>
<div style="height:800px">A long long div</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我一直在测试以下代码,但Firefox16和Chrome22给了我不同的结果.
console.log(this===window); //false in Firefox and true in Chrome
console.log(this.window===window); //true in both Firefox and Chrome
(function(){
console.log(this===window); //false in Firefox and true in Chrome
console.log(this.window===window); //true in both Firefox and Chrome
})();
Run Code Online (Sandbox Code Playgroud)
据我所知,Chrome的答案是正确的:除非被调用new,否则this总是与全局对象相同window,这会导致称为范围安全构造函数的模式.
将文件放入divFirefox后,网页将被重定向到此文件.我试着使用jQuery的阻止这种传播e.preventDefault()在drop处理程序,但失败了.
看到这个演示,丢弃一个文件#test将不会重定向网页,但进入#test1意志,我想知道为什么.我就应该总是绑定处理程序dragenter,dragover,dragleave和drop后防止传播drop?
更新:
我在html5doctor上找到了一些提示:
要告诉浏览器我们可以放入这个元素,我们所要做的就是取消dragover事件.但是,由于IE的行为不同,我们需要为dragenter事件做同样的事情.
而Mozilla 声称:
dragenter和dragover事件的侦听器用于指示有效的放置目标,即可以放置拖动项目的位置.
但我在firefox上测试这个演示,#test有效#test1但没有,似乎Mozilla犯了一个错误,并且html5doctor是对的:Firefox dragover只需要drop工作.
凭借JavaScript的灵活性,我们可以编写充满副作用的代码,或者仅仅是纯函数.
我一直对功能JavaScript感兴趣,并希望在这个范例中启动一个项目.关于这一点的麻烦肯定能帮助我收集好的做法.有没有任何一点可以强制实现纯功能和副作用的自由风格?
我目前正在使用javascript编写一个Twitter客户端,然后发现许多人提醒javascript开发人员不要泄露"消费者秘密".但他们从未说过原因.
那么为什么隐藏我的consumer_secret是如此重要?如果有人想在他的应用程序上显示我的"via My_App",使名称My_App更有名,我为什么要担心什么呢?毕竟,您无法从我的consumer_secret获取任何有用的信息,用户信息受https和token_secret的保护.
我知道let是声明块范围局部变量,但为什么它不支持重新声明和挂起var呢?
这个限制的设计目的是什么?
(function(){
'use strict';
alert(a); // undefined
var a;
})();
(function(){
'use strict';
alert(a); // error
let a;
})();
(function(){
'use strict';
var a;
var a;
alert(a); // undefined
})();
(function(){
'use strict';
let a;
let a; // error
alert(a);
})();
Run Code Online (Sandbox Code Playgroud) 我/[[0]]/在JavaScript中遇到了这个RegExp ,并且一直在想它意味着什么.
我知道外部的一对[]应该用作一个字符类,但内部对呢?我在谷歌搜索并找到了这个链接,但"整理序列"似乎并不是因为/[[.some.]]/这个页面声称我无法得到工作.
如果有人能给我一个提示,请提前致谢.
我有一个函数,里面有一些简单的表达式,添加nums,附加doms等等.因为我只需要调用一次,所以匿名函数可以做到.但我应该选择哪种方式,区别是什么?
1:$(document).ready() {})我看过很多的简写,
$(function(){
var something;
++something;
});
Run Code Online (Sandbox Code Playgroud)
2:在jquery插件中找到.是否绑定到$(document).ready()?
(function ($) {
var something;
++something;
})(jQuery);
Run Code Online (Sandbox Code Playgroud)