问题标签 [language-features]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 为什么 JavaScript 中有一个“null”值?
在 JavaScript 中,有两个值基本上表示“我不存在” -undefined
和null
.
程序员没有分配任何东西的属性 will be undefined
,但为了让属性成为null
,null
必须显式分配给它。
我曾经认为有必要null
因为undefined
是一个原始值和null
一个对象。不是,即使typeof null
会 yield 'object'
:实际上,两者都是原始值 - 这意味着既不能undefined
也不null
能从构造函数返回,因为两者都将转换为空对象(必须抛出错误才能在构造函数中声明失败)。
它们也都false
在布尔上下文中求值。我能想到的唯一真正的区别是,一个评估为NaN
,另一个评估为0
在数字上下文中。
那么为什么两者都存在undefined
,null
如果这只会让程序员null
在试图找出是否设置了属性时错误地检查呢?
我想知道的是,是否有人有一个合理的例子,必须使用null
它不能用undefined
代替来表达。
所以普遍的共识似乎是这undefined
意味着“没有这样的财产”,而null
意味着“财产确实存在,但没有价值”。
如果 JavaScript 实现实际上会强制执行此行为,我可以忍受 - 但undefined
它是一个完全有效的原始值,因此可以轻松地将其分配给现有属性以破坏此合同。因此,如果要确定属性是否存在,则必须使用in
运算符或hasOwnProperty()
无论如何。再说一遍: 和 的单独值有什么实际undefined
用途null
?
undefined
当我想取消设置不再使用但我不想的属性值时,我实际上会使用delete
。我应该null
改用吗?
c# - 有人有所有 Visual Studio C# 编译指示名称的列表吗?
在 C++ 中,有一个 #pragma 可以输出到构建日志。Visual Studio 2005 C# 是否存在?而且,有谁知道在哪里可以找到所有#pragma 名称的实际列表?
r - R是编译语言吗?
我在网络上的任何地方都找不到它(我不想安装它)。R语言是编译语言吗?它运行预先编写的脚本的速度有多快?它是否进行任何类型的编译,或者只是逐行执行指令?
php - 是好是坏?为 PHP 带来“函数链”功能
所以我在想一种方法,你可以使用内置的全局函数将方法链接引入 PHP,那就是从 F#“借用”|>(管道)运算符。它将左侧的结果通过管道传递到右侧函数的第一个参数中。当然,PHP 将不得不重新审视其某些函数的参数顺序。
这将允许您编写:
像这样:
c# - 为什么从 Java 和 C# 中删除 constness?
我知道这已经讨论过很多次了,但我不确定我是否真的理解为什么Java 和 C# 设计者选择从这些语言中省略这个特性。我对如何解决问题(使用接口、克隆或任何其他替代方法)不感兴趣,而是对决定背后的基本原理感兴趣。
从语言设计的角度来看,为什么这个功能被拒绝了?
PS:我使用了诸如“省略”之类的词,有些人可能会觉得这不够用,因为 C# 是按照加法(而不是减法)方法设计的。但是,我之所以使用这些词,是因为该功能在设计这些语言之前就存在于 C++ 中,因此在从程序员的工具箱中删除的意义上省略了它。
python - 在 python 生成器上调用 next 是否有另一种方法?
我有一个生成器,我想知道是否可以使用它而不必担心 StopIteration ,我想在没有for item in generator
. 例如,我想将它与 while 语句(或其他构造)一起使用。我怎么能那样做?
java - 除了拥有正确的方法之外,还有更多的接口吗
所以可以说我有这个界面:
我有一个实现它的类:
如果我想使用 IBox 接口,我实际上无法创建它的实例,顺便说一下:
对?所以我实际上必须这样做:
如果这是真的,那么接口的唯一目的是确保实现接口的类具有接口所描述的正确方法?或者接口还有其他用途吗?
thread-safety - 对象必须被锁定才能使用?
我在思考语言特性,我想知道以下特性是否已在任何语言中实现。
一种声明对象只能在 Mutex 中访问的方法。所以例如在java中你只能访问一个对象,如果它在一个同步块中并且在C#中是一个锁。
如果在 Mutex 块之外使用该对象,则会出现编译器错误。
有什么想法吗?
更新
我认为有些人误解了这个问题,我不是在问你是否可以锁定对象,我是在问是否有一种机制可以在声明对象时声明它只能从锁定/同步语句中访问。
sql - 错误的批量删除和更新——设计错误?
为什么 SQL 的设计者不要求任何没有Where子句的Update或Delete语句的关键字(例如“ All ”) ?这只是他们的疏忽吗?如果他们这样做了,他们会省去很多悲伤(更不用说工作了!)!
c# - 为什么我不能在 C# 中执行 ??=?
我经常发现自己在做:
为什么我不能这样做:
编辑:我知道这不是语言的一部分......我的问题是“为什么不”?我发现重复“foo”的必要性令人不快并且可能容易出错。它看起来和以下一样丑陋: