在javascript中,
var a = '';
var b = (a) ? false : true; // fixed!
Run Code Online (Sandbox Code Playgroud)
var b将被设置为false.
这是一个可以依赖的定义行为吗?
我没有找到使用interface{}类型的好资源.例如
package main
import "fmt"
func weirdFunc(i int) interface{} {
if i == 0 {
return "zero"
}
return i
}
func main() {
var i = 5
var w = weirdFunc(5)
// this example works!
if tmp, ok := w.(int); ok {
i += tmp
}
fmt.Println("i =", i)
}
Run Code Online (Sandbox Code Playgroud)
你知道使用Go的好介绍interface{}吗?
具体问题:
粗略的时间使用reflect包使用struct字段.特别是,还没弄清楚如何设置字段值.
type t struct { fi int; fs string }
var r t = t{ 123, "jblow" }
var i64 int64 = 456
得到字段的名称我 - 这似乎工作
var field = reflect.TypeOf(r).Field(i).Name
获得字段i的值作为a)接口{},b)int - 这似乎有效
var iface interface{} = reflect.ValueOf(r).Field(i).Interface()
var i int = int(reflect.ValueOf(r).Field(i).Int())
设置字段的值i - 尝试一个 - 恐慌
reflect.ValueOf(r).Field(i).SetInt( i64 )
panic:reflect.Value·SetInt使用未导出字段获得的值
假设它不喜欢字段名称"id"和"name",所以重命名为"Id"和"Name"
a)这个假设是否正确?
b)如果正确,认为没有必要,因为在同一个文件/包中
设置字段i的值 - 尝试两个(字段名称大写) - 恐慌
reflect.ValueOf(r).Field(i).SetInt( 465 )
reflect.ValueOf(r).Field(i).SetInt( i64 )
恐慌:反映.值/ SetInt使用不可寻址的值
@peterSO下面的说明是彻底和高质量的
四.这工作:
reflect.ValueOf(&r).Elem().Field(i).SetInt( i64 )
他还记录了字段名称必须是可导出的(以大写字母开头)
DOM方法document.querySelectorAll()(以及其他一些方法)返回一个NodeList.
要在列表上操作,例如使用forEach(),NodeList必须先将其转换为Array.
什么是转换的最佳方式NodeList,以一个Array?
在div中,具有属性的元素(不一定是第2代)move_id.
首先,想要最直接的方法来获取集合的第一个和最后一个元素
尝试获得第一个和最后一个:
var first = div.querySelector('[move_id]:first');
var last = div.querySelector('[move_id]:last');
Run Code Online (Sandbox Code Playgroud)
这个炸弹是因为:第一个和最后一个是我的一厢情愿(?)
不能使用Array方法,querySelectorAll因为NodeList不是数组:
var first = (div.querySelectorAll('[move_id]'))[0];
var last = (div.querySelectorAll('[move_id'])).pop();
Run Code Online (Sandbox Code Playgroud)
这个炸弹因为NodeList没有方法pop()
(是的,可以在NodeList之上使用Array方法:
var first = div.querySelector('[move_id]');
var last = Array.prototype.pop.call(div.querySelectorAll('[move_id']));
Run Code Online (Sandbox Code Playgroud)
这是有效的,也是我现在正在使用的,但我认为必须有一些更直接的东西,我只是缺少了)
其次,需要根据http://en.wikipedia.org/wiki/Tree_traversal验证元素是按照pre-oder深度优先遍历列出的
有fetch('somefile.json'),可以请求从服务器而不是从浏览器缓存中提取文件?
换句话说,有fetch()没有可能绕过浏览器的缓存?
维基百科似乎websockets是安全的:
对于Web浏览器支持,WebSocket协议的安全版本在Firefox 6(名为MozWebSocket),[2] Google Chrome 14 [3]和Internet Explorer 10开发人员预览版中实现....虽然没有已知的漏洞,但它在Firefox 4和5中被禁用...
但W3表示他们不安全:
遵循HTTP过程可能会在Web浏览器上下文中引入严重的安全问题.例如,考虑在一个路径上具有WebSocket服务器的主机和在另一个路径上具有打开的HTTP重定向器的主机.突然之间,任何可以被赋予特定WebSocket URL的脚本都可以被欺骗与Internet上的任何主机进行通信(并且可能与之共享机密),即使脚本检查URL具有正确的主机名.
是http websockets(ws :)安全与否?
是https websockets(wss :)安全与否?
如果不是#2,是否有记录的预防措施?
可以Object用作对象的属性名称吗?
这个问题是间接提出的一个stackoverflow问题.答案似乎是@Squeegy的普遍共识:
你可以使用这些单词,但只能作为字符串而不是速记属性 -有助于提供保留字列表的链接HTMLElement很酷,而obj["word"]不是
虽然我认为@Squeeky在这个领域可能比我更有知识,但在某些情况下使用保留词可能是个坏主意,我认为他的结论基于两点是错误的:
使用它们作为"速记"属性来测试保留字
在HTMLFormElement使得它不可能不以"速记"使用保留字
首先,使用保留字列表,每个都作为属性添加到obj.word和obj["word"],并作为obj.word和<input name='typeof' value='scalar' />,然后作为form.typeof和检索Object.在所有63个案例中,所有8个测试都正常工作.
其次,HTMLFormElement需要这样做,因为它使用简写表示法在其元素中检索.如果HTMLElement是表单的元素,则obj["word"]=="标量".
根据我的经验,保留字通常是数据(例如,名为"私人"的列),而不是程序造成的.因此,它们会污染JSON对象,并从那里污染INPUT,然后从那里污染HTMLFormElement.简单地说,没有大量(不需要的)工作,就不可能保留保留的单词不被强制用于速记.
在我看来这些真正的问题:
需要注意不要与现有财产发生冲突,而不是保留字
(很多,如果不是全部)变量不能保留字
使用保留字作为属性可能(但不一定)令人困惑
这个结论是否正确,保留字作为属性名称,并以字符串或简写形式访问它们就好了 - 只要对情况应用一点常识?
javascript json properties reserved-words javascript-objects
来自node.js的观点,其中所有代码都是非阻塞的.
在Go中,使用通道可以轻松实现非阻塞.
如果有人在go中编写node.js类型的服务器,是否有意义使其无阻塞?例如,让数据库connect()函数返回一个通道,而不是在等待连接发生时阻塞.
对我来说,这似乎是正确的方法
但......
type t1 struct { i int; s string }
var v1 reflect.Type = /* how to set to t1's reflect.Type? */
Run Code Online (Sandbox Code Playgroud)
是否有可能获得t1的reflect.Type而不必实例化它?
是否可以通过将其名称"t1"作为字符串来获取t1的reflect.Type?
javascript ×6
go ×4
html5 ×3
dom ×2
go-reflect ×2
reflection ×2
types ×2
arrays ×1
blocking ×1
boolean ×1
fetch-api ×1
html ×1
json ×1
node.js ×1
properties ×1
string ×1
websocket ×1