从ES2015(ES6)开始,函数具有适当的名称(包括官方name属性),除了明显的函数声明和命名函数表达式(例如赋值给变量)之外,还以各种方式创建函数时分配名称(函数的名称设置为变量的名称),分配给对象属性(函数的名称设置为属性的名称),甚至函数参数的默认值(函数的名称设置为参数的名称).但是,在现有对象上(例如,不在对象初始值设定项中)分配属性不会将该属性的名称分配给该函数.为什么不?当然必须有一个特定的理由,这是不可取的/可能的.它以前如何?
要明确:我不是在问如何解决它.我问是什么阻止了这个看似很明显的案例在被许多其他人(包括默认参数值!)处理时被处理.一定有充分的理由.
请不要推测或理论化.TC39有理由不包括它.我对这个原因感兴趣.我已经通过了TC39会议记录,但还没有找到它.到目前为止,我发现的最接近的是艾伦· 威尔夫斯 - 布洛克回复贝尔吉说,由于"各种反对意见",没有就此形式达成共识,但遗憾的是他没有说出那些反对意见.
细节:
以下所有内容都foo在兼容的浏览器上为该功能指定名称:
// Requires a compliant browser
// Assigning to a variable or constant...
// ...whether in the initializer...
{
let foo = function() { };
console.log("1:", foo.name); // "foo"
}
{
const foo = function() { };
console.log("2:", foo.name); // "foo"
}
// ...or later...
{
let foo;
foo = function() { };
console.log("3:", foo.name); // "foo"
}
// As …Run Code Online (Sandbox Code Playgroud)我有以下代码:
$('#my-button').on('click change', function(event) {
alert("Who fired me, click or change?");
});
Run Code Online (Sandbox Code Playgroud)
我怎么知道所谓的事件是"点击"还是"改变"?
当我看到以下内容时,我正在浏览Java的HashMap源代码
//The default initial capacity - MUST be a power of two.
static final int DEFAULT_INITIAL_CAPACITY = 16;
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么这个要求首先存在?我还看到允许创建具有自定义容量的HashMap的构造函数将其转换为2的幂:
int capacity = 1;
while (capacity < initialCapacity)
capacity <<= 1;
Run Code Online (Sandbox Code Playgroud)
为什么容量总是必须是2的幂?
此外,当执行自动重新散列时,究竟会发生什么?哈希函数也改变了吗?
我尝试过使用以下两个source-reference-lines.他们都编译.但有什么区别?
第一种方法:
<script src="~/Scripts/jquery-1.4.1.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
第二种方法:
<link href="~/Scripts/jquery-1.4.1.js" type="text/javascript" />
Run Code Online (Sandbox Code Playgroud)
注:另外还有一个类似的区别script和link as="script"标签,询问有关<link href="js/script.js" as="script">,这是不同的.
事件被触发后,如何暂时禁用onclick事件监听器(jQuery首选)?
例:
用户单击按钮并在下面触发此函数后,我想禁用onclick侦听器,因此不会向我的django视图发出相同的命令.
$(".btnRemove").click(function(){
$(this).attr("src", "/url/to/ajax-loader.gif");
$.ajax({
type: "GET",
url: "/url/to/django/view/to/remove/item/" + this.id,
dataType: "json",
success: function(returned_data){
$.each(returned_data, function(i, item){
// do stuff
});
}
});
Run Code Online (Sandbox Code Playgroud)
非常感谢,
阿尔
当与使用boolean的操作数,&并|成为逻辑每运营商的JLS第15.22.2.不像&&及||,然而,这些不短路; 他们总是评估双方.我有一个愚蠢的问题:当我们拥有更高效的短路逻辑运算符(,)时&,为什么效率较低的非短路逻辑运算符(,|)仍然存在?我的意思是,与短路逻辑运算符相比,非短路逻辑运算符的实际用途是什么?换句话说,总是通过使用非短路逻辑运算符来评估双方的用法是什么?&&||
有没有办法创建一个具有在运行时确定的实名的函数,而不使用eval纯JavaScript?(因此,没有生成的script元素,因为那些特定于浏览器环境[并且在许多方面eval无论如何都会伪装];不使用某个特定JavaScript引擎的非标准功能等)
请注意,我特别不询问变量或具有名称的属性引用的匿名函数,例如:
// NOT this
var name = /* ...come up with the name... */;
var obj = {};
obj[name] = function() { /* ... */ };
Run Code Online (Sandbox Code Playgroud)
在那里,虽然object属性有一个名称,但函数却没有.匿名函数适用于很多东西,但不是我在这里寻找的东西.我希望函数有一个名称(例如,在调试器中显示调用堆栈等).
这是一个常见的问题,我希望它已经彻底解决了我.
在我正在为客户端做的系统中,我们希望从不受信任的来源(HTML格式的电子邮件和HTML文件)接受HTML,清理它以使其没有任何脚本,指向外部资源的链接以及其他安全性/等等 问题; 然后安全地显示它,同时不丢失基本格式.例如,就像电子邮件客户端使用HTML格式的电子邮件一样,但理想情况下不会重复在该领域中已经发生的347,821错误(到目前为止).:-)
目标是最终通过iframe我们自己的Web界面或通过.Net Windows窗体应用程序中的WebBrowser类(这似乎不安全,可能不那么)向内部用户显示我们感觉舒适的东西,以下示例.
我们认识到其中一些可能会破坏文本的显示; 没关系.
我们将在接收时清理HTML并存储已清理的版本(不要担心存储部分 - SQL注入等 - 我们已经覆盖了这一点).
该软件需要在Windows Server上运行.COM DLL或.Net程序集首选.FOSS显然是首选,但不是交易破坏者.
到目前为止我发现了什么:
你会为这项任务推荐什么?以上之一?别的什么?
例如,我们想删除以下内容:
script 分子link,img以及与外部资源相关的此类元素(可能会替换img为"[图像已删除]"或其中一些此类文本)embed,object,applet,audio,video,并尝试创建对象的其他标签onclick 和类似的DOM0事件处理程序脚本代码href关于a触发代码的元素(即使是我们认为可以接受的链接,我们也可能会变成用户必须有意复制并粘贴到浏览器中的明文).例如,这个HTML:
<!DOCTYPE html>
<html>
<head>
<title>Example</title>
<link rel="stylesheet" type="text/css" …Run Code Online (Sandbox Code Playgroud) 我在哪里可以找到V8和ECMAScript之间所有差异的列表?例如V8支持const,它不是ECMAScript标准的一部分.
我目前正在Outsystems开发一个Web应用程序,我需要自定义CSS,我正在使用变量.我需要保证应用程序跨浏览器工作,包括在Internet Explorer中.IE不支持CSS的变量,你可以从下面的图片中看到此源.
由于我必须使用CSS变量,在IE中使用变量是否有任何解决方法?
javascript ×6
events ×2
java ×2
jquery ×2
.net ×1
ajax ×1
css ×1
dom ×1
ecmascript-6 ×1
function ×1
hash ×1
hashmap ×1
hashtable ×1
html ×1
onclick ×1
outsystems ×1
sanitization ×1
v8 ×1