ホームページ ウェブフロントエンド jsチュートリアル JavaScript タイプの基本データ型とパッケージ化タイプ system_javascript スキル

JavaScript タイプの基本データ型とパッケージ化タイプ system_javascript スキル

May 16, 2016 pm 03:21 PM

前に書いてあります

JavaScript のデータ型は、プリミティブ型と参照型の 2 つの型に分類できます

プリミティブ型は、固定領域を占有し、単純なデータセグメントであるため、変数クエリの速度を向上させるためにスタックに格納されます (値によってアクセスされます)。その中で、JavaScript の基本的なデータ型には、Unknown、Null、Boolean、Number、String が含まれます

参照型の値はサイズが変化するためスタックに格納できず、変数クエリの速度が低下するため、値はヒープ(heap)に格納されます。変数は、オブジェクトが格納されているメモリ位置を指すポインタです (アドレスによるアクセス)

[注] 参照型の値の場合、属性やメソッドの追加、変更や削除も可能ですが、基本型の場合は属性やメソッドを追加できません。

未定義

未定義型には、未定義の値が 1 つだけあります。宣言された変数が初期化されていない場合、変数のデフォルト値は未定義です


1

2

3

var test;//undefined

console.log(test == undefined);//true

var test = undefined;//undefined

ログイン後にコピー
まだ宣言されていない変数に対して実行できる操作は 1 つだけです。typeof 演算子を使用してデータ型を検出しますが、厳密モードではエラーが発生します。


typeof(test);//未定義

シーンが表示されます

[1]宣言された未代入変数


[2] オブジェクトの存在しない属性を取得します


[3]戻り値のない関数の実行結果


[4]関数のパラメータは渡されません


[5]void(式)


型変換

1

2

3

Boolean(undefined):  false

Number(undefined):  NaN

String(undefined):  'undefined'

ログイン後にコピー

ヌル

Null 型には、null という値が 1 つだけあります。論理的な観点から見ると、null 値は null オブジェクト ポインターを表します。定義された変数を使用してオブジェクトを保存する場合は、変数を null に初期化するのが最善です。実際、未定義の値は null 値から派生するため、 unknown == null

となります。

[注] null は null オブジェクト ポインタ、[] は空の配列、{} は空のオブジェクト、これら 3 つは異なります

1

console.log(null == undefined);//true

ログイン後にコピー

シーンが表示されます

オブジェクトが存在しない場合


型変換

ブール値(null): false

数値(null): 0
文字列(null): 'null'

[注意] unfineed と null はコンストラクター型ではないため、カスタム プロパティを追加することはできません

梱包タイプ

ラッピング型は特別な参照型です。基本型の値が読み取られるたびに、対応する基本ラッパー型のオブジェクトがバックグラウンドで作成され、データを操作するためにいくつかのメソッドが呼び出される場合があります。パッケージ化タイプは 3 つあります: ブール値、数値、文字列

1

2

3

4

5

6

var s1 = 'some text';

var s2 = s1.substring(2);

//在上述过程中,实际上发生了三个步骤

var s1 = new String('some text'); //(1)创建String类型的一个实例

var s2 = s1.substring(2); //(2)在实例上调用指定的方法

s1 = null; //(3)销毁这个实例

ログイン後にコピー
[注意] 参照型と基本ラッパー型の主な違いは、オブジェクトの有効期間です。 new 演算子を使用して作成された参照型のインスタンスは、実行フローが現在のスコープを離れるまでメモリ内に残ります。自動的に作成される基本的なパッケージング タイプのオブジェクトは、コード行が実行される時点でのみ存在し、その後すぐに破棄されます。これは、実行時にプリミティブ型の値に対してプロパティとメソッドを追加できないことを意味します


1

2

3

var s1 = 'some text';

s1.color = 'red';

alert(s1.color);//undefined

ログイン後にコピー

作成方法

パッケージング タイプを明示的に作成するには 2 つの方法があります:


[1] オブジェクトメソッド [非推奨]


1

2

3

var s = new Object('abc');

var b = new Object(true);

var n = new Object(123);

ログイン後にコピー
[2] コンストラクターメソッド [非推奨]


1

2

3

var s = new String('abc');

var b = new Boolean(true);

var n = new Number(123);

ログイン後にコピー
[注意] new を使用して基本パッケージ化タイプのコンストラクターを呼び出すことは、同じ名前の変換関数を直接呼び出すこととは異なります


1

2

3

4

5

var value = '25';

var number = Number(value);

console.log(typeof number);//number

var obj = new Number(value);

console.log(typeof obj);//object

ログイン後にコピー

Boolean

  Boolean类型只有两个值:true 和 false。Boolean包装类型是与布尔值对应的引用类型,在布尔表达式中使用Boolean对象容易造成误解

出现场景

  [1]条件语句导致系统执行的隐士类型转换

  [2]字面量或变量定义

类型转换

  Number(true): 1     ||   Number(false) : 0
  String(true):'true'     ||   String(false):'false'

Boolean()

  Boolean(undefined):false
  Boolean(null):false

  Boolean(非空对象包括空数组[]和空对象{}):true

  Boolean(非0): true || Boolean(0和NaN):false

  Boolean(非空包括空格字符串):true || Boolean(''):false

  [注意]true不一定等于1,false也不一定等于0

包装类型继承的方法

  valueOf():返回基本类型值true 或 false

  toString()和toLocaleString():返回字符串'true' 或'false'

1

2

3

4

5

6

console.log(typeof true.valueOf(),true.valueOf());//boolean true

console.log(typeof false.valueOf(),false.valueOf());//boolean false

console.log(typeof true.toString(),true.toString());//String 'true'

console.log(typeof false.toString(),false.toString());//String 'false'

console.log(typeof true.toLocaleString(),true.toLocaleString());//String 'true'

console.log(typeof false.toLocaleString(),false.toLocaleString());//String 'false'

ログイン後にコピー

Number

  javascript只有一种数字类型,既可以表示32位的整数,还可以表示64位的浮点数

  关于Number类型的详细信息移步到此

String

  String类型是javascript中唯一没有固定大小的原始类型

下面接着来理解下JavaScript基本数据类型的包装对象

现象:为什么可以对字符串的操作采用对象的表示法?

例如:

1

2

var s    = "this is a String";

      var len   = s.length;

ログイン後にコピー

解析:

JavaScript三个基本数据类型都有相应的对象类;分别为Sring,Number,Boolean类;
JavaScript可以灵活的将一种类型的值转换为另一种类型;
当我们在对象环境中使用字符串时,即当我们试图访问这个字符串的属性或方法时;
JavaScript会为这个字符串值内部地创建一个String包装对象;
String对象会暂时代替原始的字符串值,完成我们的访问;
这个被内部创建的String对象是瞬间存在的,它的作用是使我们可以正常访问属性和方法;
String对象在使用过后会被系统丢弃掉;
而原始值并不会被改变;

以上同样适用于数字和布尔值类型;

使用Object()函数,任何数字、字符串、布尔值都可以转换为它对应的包装对象;

例如:

1

var number_wrapper  = Object (3);

ログイン後にコピー
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

フロントエンドのサーマルペーパーレシートのために文字化けしたコード印刷に遭遇した場合はどうすればよいですか? フロントエンドのサーマルペーパーレシートのために文字化けしたコード印刷に遭遇した場合はどうすればよいですか? Apr 04, 2025 pm 02:42 PM

フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

javascriptの分解:それが何をするのか、なぜそれが重要なのか javascriptの分解:それが何をするのか、なぜそれが重要なのか Apr 09, 2025 am 12:07 AM

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

誰がより多くのPythonまたはJavaScriptを支払われますか? 誰がより多くのPythonまたはJavaScriptを支払われますか? Apr 04, 2025 am 12:09 AM

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

JavaScriptを使用して、同じIDを持つArray要素を1つのオブジェクトにマージする方法は? JavaScriptを使用して、同じIDを持つArray要素を1つのオブジェクトにマージする方法は? Apr 04, 2025 pm 05:09 PM

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

JavaScriptは学ぶのが難しいですか? JavaScriptは学ぶのが難しいですか? Apr 03, 2025 am 12:20 AM

JavaScriptを学ぶことは難しくありませんが、挑戦的です。 1)変数、データ型、関数などの基本概念を理解します。2)非同期プログラミングをマスターし、イベントループを通じて実装します。 3)DOM操作を使用し、非同期リクエストを処理することを約束します。 4)一般的な間違いを避け、デバッグテクニックを使用します。 5)パフォーマンスを最適化し、ベストプラクティスに従ってください。

Shiseidoの公式Webサイトのように、視差スクロールと要素のアニメーション効果を実現する方法は?
または:
Shiseidoの公式Webサイトのようにスクロールするページを伴うアニメーション効果をどのように実現できますか? Shiseidoの公式Webサイトのように、視差スクロールと要素のアニメーション効果を実現する方法は? または: Shiseidoの公式Webサイトのようにスクロールするページを伴うアニメーション効果をどのように実現できますか? Apr 04, 2025 pm 05:36 PM

この記事の視差スクロールと要素のアニメーション効果の実現に関する議論では、Shiseidoの公式ウェブサイト(https://www.shisido.co.co.jp/sb/wonderland/)と同様の達成方法について説明します。

Console.log出力の違い結果:なぜ2つの呼び出しが異なるのですか? Console.log出力の違い結果:なぜ2つの呼び出しが異なるのですか? Apr 04, 2025 pm 05:12 PM

Console.log出力の違いの根本原因に関する詳細な議論。この記事では、Console.log関数の出力結果の違いをコードの一部で分析し、その背後にある理由を説明します。 �...

JavaScriptの進化:現在の傾向と将来の見通し JavaScriptの進化:現在の傾向と将来の見通し Apr 10, 2025 am 09:33 AM

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

See all articles