如果两个操作数的类型不同,则JavaScript转换操作数,然后应用严格比较.如果操作数是数字或布尔值,操作数将尽可能转换为数字; 否则,如果任一操作数是字符串,则另一个操作数将转换为字符串(如果可能).
考虑到这一点,我会评估"true" == true如下:
isNaN(Number("true")) // true)String(true) === "true" // true)我已经结束了与弦"true"和"true",这应该求true,但JavaScript的显示错误.
我错过了什么?
假设我有这样的中间件;
var express = require('express');
var app = express();
app.use(function (req, res, next) {
var host = "example.com";
if (req.host !== host) {
res.redirect(301, host + req.originalUrl);
res.end();
}
});
Run Code Online (Sandbox Code Playgroud)
我需要遵守哪些规则?
res.end()吗?(或者这样res.redirect()做对我来说?)next()吗?(或连接检测请求已结束并干净地退出?)next(),我想这意味着我可能会收到对我的中间件的请求,这些请求可能已经被链中较高的其他中间件终止; 我如何保护自己不受此事影响?我有一个JTextField我希望建议结果与用户的输入匹配.我在一个JList包含的内容中显示这些建议JPopupMenu.
但是,当以编程方式打开弹出菜单时show(Component invoker, int x, int y),焦点将从中获取JTextField.
奇怪的是,如果我打电话setVisible(true),焦点不会被盗; 但是然后JPopupMenu没有连接到任何面板,并且当盒子打开时最小化应用程序时,它仍然涂在窗口上.
我也尝试将焦点重置为JTextField使用requestFocus(),但后来我必须使用恢复插入位置SwingUtilities.invokeLater(),并且调用后面的东西给用户一点点余地来弄乱现有内容/覆盖它/或做其他不可预知的事情.
我得到的代码是有效的:
JTextField field = new JTextField();
JPopupMenu menu = new JPopupMenu();
field.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
JList list = getAListOfResults();
menu.add(list);
menu.show(field, 0, field.getHeight());
}
});
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议最好的途径,以JPopupMenu编程方式显示,同时保持对焦点的关注JTextField?
我正在开发一个JavaScript重的Web应用程序; 如果没有JavaScript,整个应用程序都是无用的.我目前正在使用requirejs作为我的模块加载器,以及将r.js我的JS优化为生产中的单个文件的工具.
目前,在生产中我的标记看起来像这样;
<script src="/js/require.js"></script>
<script>
require.config({
// blah blah blah
});
require(['editor']); // Bootstrap the JavaScript code.
</script>
Run Code Online (Sandbox Code Playgroud)
但是,这会异步加载JavaScript,这会使页面呈现尽管在加载JavaScript之前无法使用; 我没有看到这一点.相反,我想像这样同步加载JavaScript ;
<script src="/js/bundle.js"></script><!-- combine require.js, config and editor.js -->
Run Code Online (Sandbox Code Playgroud)
这样,当呈现页面时,它是可用的.我已经读过所有现代浏览器都支持并行加载,这使我相信互联网上的大多数建议都建议避免这种方法,因为它阻止并行下载已经过时了.
然而;
在开发中,我想将未组合的文件作为多个脚本标签插入,而不是单个缩小的文件;
<script src="/js/require.js"></script>
<script>/* require.config(...); */</script>
<script src="/js/editor-dep-1.js"></script>
<script src="/js/editor-dep-2.js"></script>
<script src="/js/editor.js"></script>
Run Code Online (Sandbox Code Playgroud)
...但是这在requirejs中显得非常繁琐(使用r.js生成虚假构建,获取依赖项的列表editor.js),感觉不对.
因此,我的问题如下;
<script />建议过时?ES5添加数量的方法来Object,这似乎打破的JavaScript的语义的一致性.
举例来说,在此之前的扩展,JavaScript API的身边总是围绕operarting 对对象本身;
var arrayLength = [].length;
var firstPosInString = "foo".indexOf("o");
Run Code Online (Sandbox Code Playgroud)
...新的Object方法就像;
var obj = { };
Object.defineProperty(obj, {
value: 'a',
writable: false
});
Run Code Online (Sandbox Code Playgroud)
......当以下内容更加符合时:
var obj = { };
obj.defineProperty({
value: 'a',
writable: false
});
Run Code Online (Sandbox Code Playgroud)
任何人都可以冷静我的好奇心,为什么会这样?是否有任何代码片段会破坏?标准委员会是否就他们选择这种方法的原因进行了公开讨论?
javascript ×4
amd ×1
connect ×1
consistency ×1
ecmascript-5 ×1
equals ×1
express ×1
focus ×1
java ×1
jpopupmenu ×1
node.js ×1
requirejs ×1
string ×1
swing ×1