如果我有一个布尔值和一些代码可能会改变它,然后我想将它设置为true,我应该检查它是否是false?
例如:
bool b = false;
// Some code
// Here "b" can be true or false
if (cond) {
b = true;
}
Run Code Online (Sandbox Code Playgroud)
VS
bool b = false;
// Some code
// Here `b` can be `true` or `false`
if (cond && !b){
b = true;
}
Run Code Online (Sandbox Code Playgroud)
哪个更快?
注意:
我问这是因为以下Eratosthenes筛选的实现:http://bloc.gerardfarras.com/wp-content/uploads/2011/12/erastotenes.txt
if (( i % divisor == 0 ) && ( numsprimers[i] == 0 )) {
numsprimers[i] = 1;
} …Run Code Online (Sandbox Code Playgroud) 我有一个PHP websocket服务器(https://github.com/lemmingzshadow/php-websocket/).
当用户连接时,我想设置/获取一些会话数据.
问题是我无法使用,$_SESSION因为如果我这样做,而不是客户端会话,我得到我的websocket服务器的会话.
我设法得到客户的SESSID:
private function handshake($data) {
$this->log('Performing handshake');
if(preg_match("/PHPSESSID=(.*?)(?:;|\r\n)/", $data, $matches)){
$sessid = $matches[1];
}
/* Do handshake */
}
Run Code Online (Sandbox Code Playgroud)
但现在我不知道如何获得与该SESSID相关的会话数据.
我刚刚看到Websockets参考 MDN文章说
用于打开新的WebSocket服务器.所需信息是(端口,来源,位置).
那么,这是否意味着我可以创建一个websocket服务器客户端?
如果就是这样,那是否意味着我可以把它变成......(每个箭头都是一个websocket连接)

......进入这个?

但是,浏览器是否有能力在没有任何路由器/防火墙配置的情况下这样做?
我该如何使用它?该WebSocketServer链接被打破.我试过搜索它,但我没有找到任何东西.
Matlab描述nanmin并nanmax喜欢这样:
NANMIN最小值,忽略NaNs.
NANMAX最大值,忽略NaNs.
但实际上,min也max忽略了NaNs.
我应该使用哪个?
根据我的测试,nanmin并且nanmax更快.这总是这样吗?
我正在阅读ECMAScript 5.1规范.它说:
该
slice方法有两个参数,start和end [...].如果start为负,则将其视为 length + start,其中length是数组的长度.如果end为负,则将其视为length + end,其中length是 数组的长度.
"消极"是什么意思?有道理,像数学一样,
num > 0,那么num它是积极的num < 0,那么num是否定的.但是,我们+0并-0?在数学中有一个单一的0,不是积极的,也不是消极的.我的猜测是,在ECMAScript中,
+0 (又称正零)是积极的.-0 (又称负零)是否定的.但是我试着用-0用slice,和浏览器把它当作非负.
然后,都是+0和-0非正非负,尽管他们的名字?
定义数字的正面或负面在哪里?我没有在ECMAScript规范中找到定义.该定义是否继承自IEEE 754?
可配置属性似乎是可删除的:
var o = {};
Object.defineProperty(o, 'prop', {
configurable: true,
value: 'val'
});
delete o.prop; // true
o.prop; // undefined
Run Code Online (Sandbox Code Playgroud)
但它在以下情况下不起作用,至少在Firefox和Chrome上是这样的:
var form = document.createElement('form'),
input = document.createElement('input');
form.appendChild(input);
var elems = form.elements;
Object.getOwnPropertyDescriptor(form, 0)
.configurable; // true <?????????????????????? !!!
delete elems[0]; // false ?
elems[0]; // input ?
(function(){ 'use strict'; // V
delete elems[0]; // TypeError: property 0 is non-configurable
})(); // and can't be deleted
Run Code Online (Sandbox Code Playgroud)
但这似乎与规范相矛盾.
该delete运营商的定义是这样的:
生产UnaryExpression:
deleteUnaryExpression …
你能告诉我为什么我们只需要使用这个getPropertyValue方法就可以使用这个方法getComputedStyle吗?
例如,据我所知,这将起作用:
var s = getComputedStyle(element, null).opacity;
Run Code Online (Sandbox Code Playgroud)
这相当于以下内容:
var s = getComputedStyle(element, null).getPropertyValue('opacity');
Run Code Online (Sandbox Code Playgroud)
我们可以getComputedStyle不用getPropertyValue吗?
DOM4使NodeList可迭代:
interface NodeList {
getter Node? item(unsigned long index);
readonly attribute unsigned long length;
iterable<Node>;
};Run Code Online (Sandbox Code Playgroud)
根据WebIDL,这意味着
实现被声明为可迭代的接口的对象被迭代以获得一系列值.
注意:在ECMAScript语言绑定中,可迭代的接口将在其接口原型对象上具有"entries","forEach","keys","values"和 @@ iterator属性.
所以以下是可能的:
for (var el of document.querySelectorAll(selector)) ...
Run Code Online (Sandbox Code Playgroud)
我注意到在Firefox和Chrome上同样适用于HTMLCollections:
for (var el of document.getElementsByTagName(tag)) ...
Run Code Online (Sandbox Code Playgroud)
事实上,我得到了
HTMLCollection.prototype[Symbol.iterator] === [][Symbol.iterator]; // true
Run Code Online (Sandbox Code Playgroud)
但是,HTMLCollection未定义为可迭代:
interface HTMLCollection {
readonly attribute unsigned long length;
getter Element? item(unsigned long index);
getter Element? namedItem(DOMString name …Run Code Online (Sandbox Code Playgroud) 我想创建一个这样的样式表:
var sheet = document.createElement('style'); sheet.type = 'text/css';
sheet.innerHTML = data.style;
Run Code Online (Sandbox Code Playgroud)
但似乎 IE需要自己的语法.为了简化这个答案的代码,我试过了
var sheet = document.createElement('style'); sheet.type = 'text/css';
(sheet.styleSheet ? sheet.styleSheet.cssText : sheet.innerHTML) = data.style;
Run Code Online (Sandbox Code Playgroud)
但那引发了ReferenceError: invalid assignment left-hand side.
然后,我必须使用......
var sheet = document.createElement('style'); sheet.type = 'text/css';
if(sheet.styleSheet) sheet.styleSheet.cssText = data.style;
else sheet.innerHTML = data.style;
Run Code Online (Sandbox Code Playgroud)
......还是有更简单的选择?
这是我工作的jsfiddle:http://jsfiddle.net/nalinc/rym2zku1/9/
nav ul,
nav ol {
list-style: none;
margin: 0;
padding: 0;
}
.nav-item ul {
padding: inherit;
border: 1px solid black;
text-align: left;
border-radius: 4px;
}
.nav-item ul li:hover {
background-color: #d1d1d1;
}
.nav-bar {
text-align: center;
}
@media screen and (min-width: 769px) {
.nav-bar--left {
display: table;
table-layout: fixed;
width: 100%;
text-align: left;
}
.nav-bar--left .grid-item {
float: none;
display: table-cell;
vertical-align: middle;
}
}
#nav {
position: relative;
display: block;
list-style-type: none;
padding: 0; …Run Code Online (Sandbox Code Playgroud)javascript ×6
css ×2
websocket ×2
c++ ×1
cssom ×1
dom ×1
ecma262 ×1
html ×1
iterable ×1
matlab ×1
performance ×1
php ×1
properties ×1
sessionid ×1
variables ×1