この記事では、javascript に関する関連知識を提供します。Null はプリミティブ型であり、意図的にオブジェクト値を含まないことを意味します。JavaScript の null についてすべてを見てみましょう: それは何を意味しますか、それを検出する方法、null と未定義の違い、null を多用するとコードのメンテナンスが困難になる理由などについて説明します。皆さんの参考になれば幸いです。
[関連する推奨事項: JavaScript ビデオ チュートリアル、Web フロントエンド]
JavaScript
2 つのタイプがあります: プリミティブタイプ (文字列、ブール値、数値、シンボル
) とオブジェクト
オブジェクトは複雑なデータ構造です。最も単純な JavaScript
オブジェクトは、キーと関連する値のコレクションである通常のオブジェクトです。
let myObject = { name: 'Eric Cartman' };
しかし、多くの場合、オブジェクトを作成することはできません。この場合、JavaScript
は特別な値 null
を提供します - オブジェクトが欠落していることを示します
let myObject = null;
この記事では、## について学びます ## についてのすべて#JavaScript の #null
: その意味、検出方法、null
と unnamed
の違い、# が頻繁に使用される理由 ##null コードのメンテナンスなどが困難になります。
1. null
null
null は、意図的にオブジェクト値を含まないプリミティブ型です。
null
(変数に割り当てられている、または関数によって返された) が表示される場合は、その場所にあります。オブジェクトであるはずですが、何らかの理由でオブジェクトが作成されませんでしたたとえば、関数
greetObject()
nullを返すこともあります。 ## オブジェクトを作成できない場合 #:<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;">function greetObject(who) {
if (!who) {
return null;
}
return { message: `Hello, ${who}!` };
}
greetObject(&#39;Eric&#39;); // => { message: &#39;Hello, Eric!&#39; }
greetObject(); // => null</pre><div class="contentsignin">ログイン後にコピー</div></div>
文字列パラメーターが上記の関数に渡されると、期待どおり、関数は object{ メッセージ: 'Hello, Eric!' を返します。 }
ただし、関数にパラメータが渡されない場合、関数は null
を返します。
パラメータに値がないため、null
を返すのが妥当です。その結果、greeting
オブジェクトを作成できなくなります。1.1 A null# のより適切なメタファー
##null
2 が含まれています。null を検出する方法
null OK この方法では、厳密な等価演算子
const missingObject = null; const existingObject = { message: 'Hello!' }; missingObject === null; // => true existingObject === null; // => false
missingObject 変数に含まれるため、結果は
true
null 値。変数にオブジェクトなどの null 以外の値が含まれている場合、式
existingObject === null は
false2.1 null は false 値#と評価されます。
##null
および false
, 0, "、
はすべて false の値です。条件文の場合、JavaScript
はそれらを false
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;">Boolean(null); // => false
if (null) {
console.log(&#39;null is truthy&#39;);
} else {
console.log(&#39;null is falsy&#39;); // logs &#39;null is falsy&#39;
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
2.2 typeof nulltypeof value
型演算子で実行できます。値のタイプを決定します。たとえば、タイプ 15 は number
、
と同じです。 #興味深いはい、null
値の結果は何ですか typetypeof null; // => 'object'
はどうでしょうかオブジェクトの種類がありません
と判断されますか? typoef null
が
として扱われることが判明しました。これは初期の使用しないでください。JavaScript# のバグです。 ## の実装です。
typeof 演算子は、
null 値を検出します。前述したように、厳密等価演算子
myVar === null# を使用してください。 ##typeof
を使用して変数がオブジェクトであるかどうかを確認するには、
状況 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;">function isObject(object) {
return typeof object === &#39;object&#39; && object !== null;
}
isObject({ prop: &#39;Value&#39; }); // => true
isObject(15); // => false
isObject(null); // => false</pre><div class="contentsignin">ログイン後にコピー</div></div>
3 を除外する必要があります。 nullnull
のトラップは通常、オブジェクトを使用することが予想される状況で予期せず発生します。その後、
からプロパティを抽出しようとすると、JavaScript
はエラーをスローします
let who = ''; greetObject(who).message; // throws "TypeError: greetObject() is null"
message プロパティにアクセスしてみます。
who
変数は空の文字列であるため、関数は null
を返します。
から message
プロパティにアクセスすると、 TypeError エラーがスローされます オプションの連鎖演算子を使用して
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;">let who = &#39;&#39;;
greetObject(who)?.message ?? &#39;Hello, Stranger!&#39;;
// => &#39;Hello, Stranger!&#39;</pre><div class="contentsignin">ログイン後にコピー</div></div>
を処理するか、次のセクションで説明する 2 つの代替方法を使用できます。<h2>4. null 的替代方案</h2><p>当你不能构造一个对象时,很容易返回 <code>null
。但这种做法也有缺点
一旦 null
出现在执行堆栈中,你总是必须检查它
我们尽量避免返回 null
:
null
null
让我们回忆一下 greetObject()
函数返回 greeting
对象
当缺少参数时,可以返回一个默认对象,而不是返回 null
function greetObject(who) { if (!who) { who = 'Stranger'; } return { message: `Hello, ${who}!` }; } greetObject('Eric'); // => { message: 'Hello, Eric!' } greetObject(); // => { message: 'Hello, Stranger!' }
或者抛出一个错误
function greetObject(who) { if (!who) { throw new Error('"who" argument is missing'); } return { message: `Hello, ${who}!` }; } greetObject('Eric'); // => { message: 'Hello, Eric!' } greetObject(); // => throws an error
这些实践可以让你完全避免处理 null
undefined
就是未初始化的变量或对象属性的值
例如,如果在声明变量时没有赋初值,那么访问该变量的结果为 undefined
let myVariable; myVariable; // => undefined
null
和 undefined
之间的主要区别是,null
表示丢失了的对象,而 undefined
表示未初始化的状态
严格相等运算符 === 区分 null
和 undefined
null === undefined; // => false
而松散相等运算符 ==
则认为 null
和 undefined
相等
null == undefined; // => true
我使用松散相等运算符检查变量是否为 null
或 undefined
function isEmpty(value) { return value == null; } isEmpty(42); // => false isEmpty({ prop: 'Value' }); // => false isEmpty(null); // => true isEmpty(undefined); // => true
null
是 JavaScript
中的一个特殊值,表示丢失的对象
严格相等运算符判断变量是否为空: variable === null
。
typoef
操作符用于确定变量的类型(number, string, boolean
)。但是,typeof
在 null
情况下会引起误解: typeof null
结果为 object
null
和 undefined
在某种程度上是等价的,但null
表示一个丢失的对象,而 undefined
表示未初始化状态
尽可能避免返回 null
或将变量设置为 null
。因为这种做法会导致 null
值的扩展和需要对 null
的验证。相反,尝试使用具有默认属性的对象,或者甚至抛出错误会是更好的实践
你会使用什么方法来检查 null
?
【相关推荐:javascript视频教程、web前端】
以上がJavaScript における null の包括的な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。