过去,人们习惯在JavaScript块周围包装HTML注释标签,以防止"旧"浏览器显示脚本.即使是Lynx也足够聪明,可以忽略JavaScript,那么为什么有些人会继续这样做呢?这些天有没有正当理由?
<script type="text/javascript">
<!--
//some js code
//-->
</script>
Run Code Online (Sandbox Code Playgroud)
编辑:我遇到过一种情况.某些代码编辑器(如Dreamweaver)在"设计视图"中时会被JavaScript字符串中的引用HTML弄糊涂,并尝试将其显示为页面的一部分.
我\xe2\x80\x99m 试图理解为什么某些 HTML 属性未通过 W3C 验证。我在真实的代码库中遇到了这个问题,但这里\xe2\x80\x99s是一个最小的复制:
\n<!DOCTYPE html><html lang="en"><head><title>a</title></head><body>\n\n<img alt="1" src="\xe2\xad\x90">\n<img alt="2" src="/\xe2\xad\x90">\n<img alt="3" src="/a\xe2\xad\x90">\n<img alt="4" src="/a/\xe2\xad\x90">\n<img alt="5" src="">\n<img alt="6" src="/"> <!-- Only this is invalid. -->\n<img alt="7" src="/a">\n<img alt="8" src="/a/">\n\n</body></html>\nRun Code Online (Sandbox Code Playgroud)\nW3C 验证器仅报告一个错误,影响第六张图像:
\n\n\n\n
\n- \n
错误:元素
\n/属性值错误:路径段中存在非法字符:不允许。srcimg?Run Code Online (Sandbox Code Playgroud)\n<img alt="6" src="/">\n
为什么只有这个有问题,其他的没有?\xe2\x80\x99 有什么不同?
\n我想要一个接受哈希和可选关键字参数的方法.我尝试定义这样的方法:
def foo_of_thing_plus_amount(thing, amount: 10)
thing[:foo] + amount
end
Run Code Online (Sandbox Code Playgroud)
当我使用关键字参数调用此方法时,它按预期工作:
my_thing = {foo: 1, bar: 2}
foo_of_thing_plus_amount(my_thing, amount: 20) # => 21
Run Code Online (Sandbox Code Playgroud)
但是,当我省略关键字参数时,哈希会被吃掉:
foo_of_thing_plus_amount(my_thing) # => ArgumentError: unknown keywords: foo, bar
Run Code Online (Sandbox Code Playgroud)
我怎样才能防止这种情况发生?有没有像防摔这样的东西?
似乎有两种方法可以尝试将向量转换为数组,通过切片 ( fn a) 或直接 ( fn b):
use std::array::TryFromSliceError;
use std::convert::TryInto;
type Input = Vec<u8>;
type Output = [u8; 1000];
// Rust 1.47
pub fn a(vec: Input) -> Result<Output, TryFromSliceError> {
vec.as_slice().try_into()
}
// Rust 1.48
pub fn b(vec: Input) -> Result<Output, Input> {
vec.try_into()
}
Run Code Online (Sandbox Code Playgroud)
实际上,它们之间有什么区别?它只是错误类型吗?添加后者的事实让我想知道是否还有更多内容。