Tag: JavaScript

为什么以及(] + ]) + ]]的计算结果为字母“i”?

在阅读这篇贴在dzone上的文章时,我发现了由Marcus Lagergren最初在Twitter上发布的一段JavaScript代码。 下面的代码显然打印string"fail" (![]+[])[+[]]+(![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]; 这涉及到隐式types转换,我试图理解这条线是如何解释的。 我已经隔离每个字符 (![]+[])[+[]]打印"f" (![]+[])[+!+[]]打印"a" ([![]]+[][[]])[+!+[]+[+[]]]打印"i" (![]+[])[!+[]+!+[]]打印"l" 我也设法分解expression式,从"i" 字母"f" ![]一个空数组是一个对象,根据ECMAScript文档,点9.2在转换为boolean时计算为true ,所以这是false false+[]按照第11.6.1节二进制+运算符的两个参数都被转换为String,因此我们得到"false"+"" ,其结果为"false" +[]一个加号运算符会导致一个ToNumber转换,如果该参数是一个Object则会进行ToPrimitive转换。 这种转换的结果是通过调用对象的[[DefaultValue]]内部方法来确定的。 如果数组为空,则默认为0 。 (ECMAScript文档,章节: 11.4.6,9.3,9.1 ) "false"[0]我们访问索引为0的字符,因此"f" 字母"a" 同样的故事,这里唯一的区别是方括号内的部分(通过使用一元+和! )触发的额外的转换(通过计算一个数字来指向string"false"中的另一个字符) ! 运营商。 如上所述, +[]计算结果为0 。 如第9.2 节和第11.4.9 节中定义的那样, !0评估为true 。 首先,将0转换为布尔值false ,然后运算符将该值反转。 +true再次为+true ,一元正则触发一个ToNumber转换,它返回一个1表示二进制true ( Section 11.4.6 and 9.3 ) "false"[1]返回string中的第二个字符,即"a" 字母“l” !+[]计算结果如上所述 使用基元上的二进制+ true+true触发ToNumber转换。 如果是,则结果是1+1等于2 "false"[2] – […]

jQuery AJAX调用PHP脚本与JSON返回

我已经用这个砸了我的头对着一堵砖墙,我已经尝试了stackoverflow上的解决scheme的负载,但找不到一个工程! 基本上,当我张贴我的AJAX PHP返回JSON,但AJAX显示未定义,而不是值: JS : /* attach a submit handler to the form */ $("#group").submit(function(event) { /* stop form from submitting normally */ event.preventDefault(); /*clear result div*/ $("#result").html(''); /* get some values from elements on the page: */ var val = $(this).serialize(); /* Send the data using post and put the results in a div […]

Javascript格式date/时间

我需要将2014-08-20 15:30:00的date/时间更改为08/20/2014 3:30 pm 这可以使用javascript的Date对象来完成吗?

closuresAngularJS中的URL操作

我正在尝试使用Angular编写我的第一个Web应用程序。 在正常模式下(html5Mode off),Angular强制地址的哈希部分看起来像一个“path”(加一个前导“/”),并编码特殊字符 – 例如,它允许一个“?” 和“#”,并用%3F和%23replace其他。 有没有办法closures这个function? 我不想使用$ locationProvider / $ routeProvider特性 – 我想自己parsing哈希(在我的情况下,用户将在哈希中input一些“自由文本”来search我的网站)。 我读了routeProvider不能被configuration为使用正则expression式… 如果htmlMode打开,那么地址的哈希部分不会被强制看起来像一个path(不是前导“/”),但它仍然编码特殊字符。 我知道一些浏览器可能编码/转义的特殊字符,但如果用户设法在地址栏中input一些特殊字符,那么我不想改变它。 谢谢

Asp.Net Mvc Url.Action在外部js文件?

在外部的js文件中,我不能使用 url = "@Url.Action("Action", "Controller")" //url output : @Url.Action("Action", "Controller") //I get IllegalPath Name error. 当我这样写: url = "/Controller/Action" 如果项目位于子文件夹下,则脚本不起作用。 我需要这样的东西作为亲戚Url: url = "~/Controller/Action" 如何做到这一点? 谢谢。

Javascript:如何使用Javascript或Servlet显示字节数组中的图像?

我的ajax调用将从服务器获得一个字节数组的图像。 如何在网页上使用javascript显示图像(位于字节数组中)?

我应该在哪里把CSS和Javascript代码放在HTML网页中?

在devise一个网页的时候,我应该把下面的代码放在哪里? <link rel=stylesheet type="text/css" href="css/layout.css"> 我应该把它放在<head>还是放在<body> ? 请澄清以下问题: 如果我把它放在<head>或者HTML代码的其他地方,它有什么不同? 如果我有两个CSS(或Javascript)文件呢? 由于我只能在另一个文件之前包含一个文件,Web浏览器将使用哪个文件来显示网页?

Node.js原生Promise.all是并行还是顺序处理?

我想澄清这一点,因为文件不太清楚; Q1: Promise.all(iterable)是顺序还是并行处理所有的promise? 或者更具体地说,它就像运行链式承诺一样 p1.then(p2).then(p3).then(p4).then(p5)…. 还是其他types的algorithm,其中所有p1 , p2 , p3 , p4 , p5等被同时调用(并行),并且一旦所有parsing(或一个拒绝)就返回结果? 问题2:如果Promise.all并行运行,有没有一种方便的方法来按顺序运行一个迭代器? 注意 :我不想使用Q或Bluebird,但所有原生ES6规格。

使用Javascript / jQuery从外部样式表获取CSS值

如果样式引用的元素尚未生成,是否可以从页面的外部CSS获取值? (该元素将被dynamic生成)。 我见过的jQuery方法是$('element').css('property'); ,但是这依赖于页面上的element 。 有没有办法找出什么属性是设置在CSS内而不是一个元素的计算风格? 我会不得不做一些丑陋的事情,像添加元素的隐藏副本到我的页面,以便我可以访问它的样式属性?

如何删除元素中的所有侦听器?

我有一个button,我添加了一些事件列表: document.getElementById("btn").addEventListener("click", funcA, false); document.getElementById("btn").addEventListener("click", funcB, false); document.getElementById("btn").addEventListener("click", funcC, false); document.getElementById("btn").addEventListener("blur" , funcD, false); document.getElementById("btn").addEventListener("focus", funcE, false); <button id="btn">button</button> 我可以删除它们: document.getElementById("btn").removeEventListener("click",funcA); 如果我想要一次删除所有侦听器,或者我没有函数引用( funcA )? 有没有办法做到这一点,或者我必须逐个删除它们?