由于JSON格式指定不应对单引号进行转义,因此如果您在其中包含转义单引号,则大多数库(甚至本机JSON解析器)都将失败.现在这通常不是问题,因为大多数时候你做一个XHR来获取一些格式化为JSON的数据,你使用包含你可以解析的JSON字符串的responseText等.
在这种特殊情况下,我有一个JSON字符串存储在数据库中作为文本...所以数据库包含类似的东西{"property":"value"},我想将其作为服务器创建的HTML页面的一部分输出,以便该页面中的JavaScript代码看起来这样的事情:
var x = '{"property":"value"}';
Run Code Online (Sandbox Code Playgroud)
现在,如果数据库中的JSON字符串包含如下所示的单引号:
{"property":"val'ue"}
Run Code Online (Sandbox Code Playgroud)
然后我需要逃避它,否则我将永远无法将其用作字符串:
console.clear();
var obj = {prop:"val'ue"};
var str = JSON.stringify(obj);
console.log("JSON string is %s",str);
console.dir(JSON.parse(str)); //No problem here
//This obviously can't work since the string is closed and it causes an invalid script
//console.dir(JSON.parse('{prop:"val'ue"}'));
//so I need to escape it to use a literal JSON string
console.dir(JSON.parse('{"prop":"val\'ue"}'));
Run Code Online (Sandbox Code Playgroud)
那么问题是为什么{"prop":"val\'ue"}不考虑有效的JSON字符串?
为什么JSLint在以下JavaScript行上返回"Bad escapement"?
param = param.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
Run Code Online (Sandbox Code Playgroud)
从JSLint文档我认为这可以,因为正则表达式文字前面有一个括号:
正则表达式用简洁而神秘的表示法编写.JSLint查找可能导致可移植性问题的问题.它还尝试通过推荐显式擒纵来解决视觉模糊.
JavaScript的正则表达式文字的语法会重载/字符.为避免歧义,JSLint期望正则表达式文字前面的字符是(或=或:或字符).
假设我有一个这样的类:
function myClass(q) {
this.someFunction = function(e) {
console.log("Click event");
};
jQuery(q).click(this.someFunction);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法向JSDoc表明someFunction不仅仅是一个应该直接调用的函数,而是一个事件处理程序?
我看到了@event标签,但是如果我理解正确的话,这更多的是记录我的类中的一个函数,我认为它是一个事件(客户端代码也将注册,我的类将在需要时触发)而不是事件处理程序功能?
我正在尝试学习如何在开发过程中使用BDD,有时我最终会编写暗示UI设计的内容,因此对于全新的开发或新功能,UI并不总是存在.
例如,如果我在"单击列标题时"场景中这样说,则表示此功能基于某种表格或网格,但此时我们仍然只是编写用户故事,因此没有UI然而.
让我感到困惑的是,我知道在这个过程的哪个阶段我们想出了一个UI设计?
请记住,我只阅读有关BDD的文章,我认为这对我们的团队有很大帮助,但对此仍然很新!谢谢!