在JavaScript中,有两个基本上说'我不存在'的值 - undefined和null.
程序员未分配任何内容undefined的属性将是,但为了使属性成为必需null,null必须明确分配给它.
我曾经认为需要null因为undefined原始价值和null对象.它不是,即使typeof null会产生'object':实际上,两者都是原始值 - 这意味着既不能undefined也不null能从构造函数返回,因为它们都将被转换为空对象(必须抛出错误来宣告构造函数中的失败).
它们也都false在布尔上下文中进行求值.唯一真正的区别我能想到的是,一个计算结果为NaN,其他0的数字环境.
那么为什么会出现这两种情况undefined,null如果这只会让那些null在试图找出属性是否已经设置时错误检查的程序员感到困惑?
我想知道的是,如果有人有一个合理的例子,那就是必须使用null而不是用来表示undefined.
因此,普遍的共识似乎undefined是"没有这样的财产",而null意味着"财产确实存在,但没有价值".
我可以忍受,如果JavaScript实现实际上会强制执行此行为 - 但它undefined是一个完全有效的原始值,因此可以很容易地将其分配给现有属性以破坏此合同.因此,如果要确定属性是否存在,则必须使用in运算符或hasOwnProperty()任何方式.再一次:对于undefined和的单独值的实际用途是null什么?
我实际上undefined在我想要取消设置不再使用但我不想要的属性值时使用delete.我应该用null吗?
我有一位同事需要将文本从PL/SQL方法转换为符合XML的文本,因为他正在通过更新文本模板构建Excel电子表格.
PL/SQL中是否有方法将文本转换/编码为符合XML的文本?
请考虑以下lua代码段:
local time = os.time()
for _= 1, 10 do
time = time + 1
print('Seeding with ' .. time)
math.randomseed(time)
for i = 1, 5 do
print('\t' .. math.random(100))
end
end
Run Code Online (Sandbox Code Playgroud)
在Linux机器上,结果如预期的那样是随机数.但似乎至少在Mac OS X上,改变种子后的第一个随机数总是一样的!
我猜这与Lua依赖C rand()函数生成随机数这一事实有关,但有人有解释吗?
编辑:这是linux机器上面代码输出的摘录(即输出是预期的):
$ lua test.lua
Seeding with 1232472273
69
30
83
59
84
Seeding with 1232472274
5
21
63
91
27
[...]
Run Code Online (Sandbox Code Playgroud)
在OS X机器上,"Seeding with ..."之后的第一个数字始终为66.
当我在析构函数内部时,其他一些线程可能会开始执行对象的成员函数吗?如何应对这种情况?
只是想知道是否有更好的方法在ORACLE中编写以下PL/SQL代码片段?
IF(p_c_courtesies_cd is not null
OR p_c_language_cd is not null
OR v_c_name is not null
OR v_c_firstname is not null
OR v_c_function is not null
OR p_c_phone is not null
OR p_c_mobile is not null
OR p_c_fax is not null
OR v_c_email is not null
) THEN
-- Do something
END IF;
Run Code Online (Sandbox Code Playgroud) 例如,在C#或Java中,总是有一个main()方法用于运行程序.你怎么称它所在的课程?我将使用的一些想法只是"程序"或程序本身的名称.在这种情况下,什么是传统的?
如果我想在JavaME中实现一个正则表达式引擎(缺少正则表达式库),哪里是最好的起点?我想象现有的正则表达式代码可以作为移植的起点使用.
如果不这样做,那么如何编译和执行正则表达式的好指南就可以了.
我有以下界面:
public interface Result<T extends Serializable> extends Serializable{
T getResult();
}
Run Code Online (Sandbox Code Playgroud)
使用该接口,我无法定义类型的变量
Result<List<Integer>>
Run Code Online (Sandbox Code Playgroud)
因为List不可序列化.
但是,如果我将界面更改为:
public interface Result<T> extends Serializable{
T getResult();
}
Run Code Online (Sandbox Code Playgroud)
现在变得不可能通过编译时检查来实现,因为不能保证T是可序列化的,并且类的整个点是存储结果,以便我可以稍后将其取回,可能在通过互联网传输之后.
我的问题是,有没有办法声明一个变量,以便它有两种类型,或者有其他方法可以做到这一点,我没有看到?所以,也许是这样的:
(List<Integer> extends Serializable) value = new ArrayList();
Run Code Online (Sandbox Code Playgroud)
我试图将这个问题的重担放在实现上,以便该接口的未来消费者不会意识到这个问题.
谢谢你的帮助!
下面是我正在尝试做的更详细的示例:我正在调用服务器,我希望将结果存储在结果对象中,但我不想处理强制转换.因此,可以在服务器上调用的每个方法都将使用泛型定义结果的类型.此结果对象还将存储有关结果的其他元数据,例如,可能返回的信息太多.在许多情况下,我想使用列表,但List接口不可序列化,尽管许多实现都是.
那么,如何指定所使用的类型必须是Serializable,但是仍然允许使用List(而不是List的特定实现)?
我有两个运行PHP的Apache服务器.一个接受查询字符串中的正斜杠,并以预期的方式将其传递给PHP,例如:
http://server/index.php?url=http://foo.bar
工作,在PHP中这个表达式是真的:
$_REQUEST['url'] == "http://foo.bar"
Run Code Online (Sandbox Code Playgroud)
但是,在其他 Apache服务器中,相同的URL会导致403 Forbidden错误!请注意,如果查询字符串是正确的URL转义(即使用%2F而不是正斜杠),那么一切正常.
显然,Apache或PHP配置存在一些差异导致这种情况,但我无法弄清楚是什么!
我希望在这两种情况下接受这种形式的URL,而不是拒绝它.
我正在进行同行评审,我发现人们使用window.location.search检查已发送到给定(搜索)页面的paremetes.
这样做是否安全?我原以为我们可以在脚本块内的HTML输出中打印参数并验证打印的变量而不是查询window.location.