ECMAScript是一种动态类型的语言,构建于5种简单数据类型(Undefined、Null、Boolean、Number、String)和一种复杂数据类型(Object)的基础之上。这篇文章就来复习一下简单数据类型,我会尽量从编程实践的角度来描述,下面代码运行环境为FireFox 14.0.1。
简单数据类型
简单数据类型 | 取值 |
Undefined | undefined(只有一个值) |
Null | null(只有一个值) |
Boolean | true|false(只有两个值) |
Number | 数值 |
String | 字符串 |
最初に説明する必要があるのは、ECMAScript では、Boolean、Number、String を含む上記の 5 つの単純なデータ型にはすべて、同じ名前の組み込みのパッケージング オブジェクトとリテラル値があるということです (単純なデータ型の変数) は、状況に応じて自動的にパッケージ化されるため、メソッドを直接呼び出すことができます。詳細については、組み込みオブジェクトについて説明するときに説明します。 🎜>
console.info(new Boolean(false) ).toString());//false、false を Boolean()
console.info( false.toString());//false でラップします。これは、Boolean() パッケージ化を使用してから
を呼び出すことと同等です。 console.info('test'.toString());//test、これは String() パッケージ化を使用してから Call
try{
console.info(unknown.toString()) を呼び出すことと同等です。 );//対応するパッケージング タイプがないため、例外がスローされます。
}catch(e){
console.info(e );//TypeError
}
try{
console .info(null.toString());//対応するパッケージングタイプがないため、例外がスローされます
}catch(e){
console.info(e);//TypeError
}
var num = 4;
console.info(num.toString());//4、単純な数値変数で直接使用できます。メソッドの呼び出しは、それを Number() でラップしてから行うのと同じです。 call
//console.info(3.toString());//SyntaxError、構文エラーは try を使用してキャプチャできず、数値リテラルで直接呼び出すことができないことを示します
次に、最も一般的に使用されるデータ変換について説明します:
(2) 数値に変換: value
(3) 文字列の変換: '' value
5 つの単純なデータ型については、以下で詳しく説明します。
1. 未定義型
未定義のデータ型には、値が 1 つだけあります。
(1) 初期化されていない値はすべてデフォルトで未定義になります (変数を明示的に未定義に初期化する必要はありません)。
(2) 関数スコープ内で、実パラメータが渡されていない関数パラメータは未定義です。
(3)関数が明示的にreturnまたはreturn;を行っていない場合、戻り値は不定となります。
(4) ECMAScript では、null==unknown は true を返し、null===unknown は false を返すと規定されています。
(5) 未定義の対応するブール値は false です。
(6) undefiend に対して typeof を使用すると、文字列 'unknown' が返されます。宣言されていない "変数" に対して使用した場合も、'unknown' が返されます。
(7) 未定義は、値を NaN に変換し、文字列を '未定義' に変換します。
console.info(undefined===null);//しかし、結局のところ、未定義と null は 2 つのデータ型であり、合同比較を使用すると false が返されます
console.info。 (typeof undefined ==unknown);//false、typeof unknown は文字列 'unknown' を返すため、ここでは false が出力されます
console.info( unknown);//NaN、値を変換すると NaN
console.info ('' undefine);//未定義、文字列 'unknown' に変換されます
2. Null 型
Null 型にも値は 1 つだけあります: null。
(1) null 値に対して typeof を使用すると、文字列 'object' が返されます。
(2) null の対応するブール値は false です。
(3) オブジェクトの保存に変数を使用する場合は、null に初期化することをお勧めします。
コードをコピー
console.info( null); //0 、値 0 に変換されます
console.info('' null);//null、文字列 'null' に変換されます
3、Boolean类型
Boolean类型只有两个值:true和false。
(1)虽然只有两个值,但是任何一种数据类型的值都能转换为与其相对应的Boolean值,转换方式主要有三种:
A、通过转型函数Boolean()转换
需要注意的是,当Boolean()作为转换函数时,会转换为一个与其相应的Boolean值,当作为构造函数时,会创建一个对象,而任意非空对象的Boolean值都是true,有时候这会造成误解,建议就是不使用Boolean()。对于String()、Number()也有类似情况。
B、通过双重否定!!操作符转换
C、通过隐式转换,比如一些条件语句中
(2)Boolean类型的true和false,使用typeof时,均返回字符串'boolean'。
(3)在转换为数值时,true和false分别转换为1和0,转换为字符串时,分别为'true'和'false'。
var value = 'test';
var empty = '';
console.info(!!value);//true
console.info(!!empty);//false
console.info(Boolean(value));//true
console.info(Boolean(empty));//false
console.info(!!value === Boolean(value));//true,说明两种转换方式等价
console.info(!!empty === Boolean(empty));//true
console.info(new Boolean(value));//Boolean对象,注意这里使用了new,会创建一个对象
console.info(new Boolean(empty));//Boolean对象
if(value){//隐式转换为true
console.info(value);//test
}
if(empty){//隐式转换为false,不执行括号内部语句
console.info('empty');
}
if(new Boolean(empty)){//先创建对象,再隐式转换为true,会执行括号内部的语句
console.info('empty');//empty
}
console.info(typeof true == 'boolean');//true
console.info(+true);//1,一元操作符,转换为数值1
console.info(+false);//0
console.info(''+true);//true,重载后的+操作符,转换为字符串'true'
console.info(''+false);//false
具体的转换规则如下:
数据类型 | 转换为true的值 | 转换为false的值 |
Undefined | - | undefined |
Null | - | null |
Boolean | true | false |
Number | 任意非0数值(包括无穷大) | 0和NaN |
String | 任意非空字符串 | 空字符串 |
Object | 任意对象 | - |
4. 数値型
ECMAScript には個別の整数型や浮動小数点型はありません。数値型は 1 つだけあり、IEEE754 形式で表されます (この表現には計算中に丸め誤差が生じます)。詳細はこちらをご覧ください。これらのことは、私が学校で C 言語を学んだときにすでに頭痛の種でした。以下では、実際のプログラミングで最も一般的に使用されるものを先頭に示します。あまり重要でない詳細に煩わされたくない場合は、後でいつでも Number についての説明を省略できます。
(1)数値変換:主に以下の3つの変換関数
- Number() 関数: Boolean() と同様に、データを Number 型に変換します。単項プラス演算子 ( ) を使用することをお勧めします。
- parseInt() 関数: 整数を解析します。データとベースを渡すことができます。たとえば、parseInt('070',8) は 10 進数で 56 を出力します。
- parseFloat() 関数: 浮動小数点数を解析し、解析されたデータの結果が整数の場合は、その整数を直接返すことに注意してください。
注: Number() と変換を使用する場合、true—> 1、false—> 0、未定義—> NaN、null—> 0、空の文字列—> 0、空でない文字列— > ;数値的に分析します。
var trueVal = true; 🎜>var falseVal = false;
var nullVal = null;
var floatVal = '1.0';テスト';
var empty = '';
console.info(Number(trueVal));//1
console.info(Number(falseVal));//0
console.info (Number( undef));//NaN
console.info(Number(nullVal));//0
console.info(Number(intVal));//1
console.info(Number (floatVal) );//1
console.info(Number(strVal));//NaN
console.info(Number(empty));//0
console.info( trueVal); //1
console.info( falseVal);//0
console.info( undef);//NaN
console.info( nullVal);//0
コンソール。 info( intVal );//1
console.info( floatVal);//1
console.info( strVal);//NaN
console.info( empty);//0
console.info(parseInt(trueVal));//NaN
console.info(parseInt(falseVal));//NaN
console.info(parseInt(undef));//NaN
console.info(parseInt(nullVal));//NaN
console.info(parseInt(intVal));//1
console.info(parseInt(floatVal));//1
コンソール.info( parseInt(strVal));//NaN
console.info(parseInt(empty));//NaN
console.info(parseFloat(trueVal));//NaN
console.info (parseFloat(falseVal));//NaN
console.info(parseFloat(undef));//NaN
console.info(parseFloat(nullVal));//NaN
コンソール。 info(parseFloat (intVal));//1
console.info(parseFloat(floatVal));//1
console.info(parseFloat(strVal));//NaN
console.info( parseFloat(empty ));//NaN
注: これらの変換関数の動作は、ブラウザの実装によって異なる場合があります。途中で質問がある場合は、独自のテストを作成することをお勧めします。実際のプログラミングプロセス。 『JavaScript による上級プログラミング (第 3 版)』では、このセクションで説明されている内容が実際の実行結果と異なる箇所が多くあります。たとえば、元の本では parseInt() は文字列のみを解析できると記載されていますが、次のコードは文字列を解析できます。
コードをコピーします。
}
};
console.info(parseInt(object));//1
(2) 整数と浮動小数点数: C言語の影響を受けた人は頑固に整数と浮動小数点数を区別しなければなりません! ECMAScript では、これらは予想されるほど違いはありません。簡単に言うと、小数点を含み、小数点の後に 0 以外の桁が 1 つ以上ある値は浮動小数点数であり、それ以外の場合は整数です。たとえば、1.01 は浮動小数点数であり、小数点の後に 0 以外の値がないため、1., 1.00 はエンジンによって整数 1 に解析されます。 2 つの整数を除算した結果も 3 / 2 = 1 のように丸められると想像されるかもしれませんが、ECMAScript ではこれについて心配する必要はありません。その数学的性質は復元されており、3 / 2 = であることがわかります。 1.5、この 1 点については、オペレーター関連のセクションで再度言及します。
(3) 基数方式: キャリー方式とも呼ばれ、実際には各基数システムに基数があり、下位桁の値がこの基数に達すると、上位桁の値は 1 になります。日常生活で最もよく使われるのは 10 進法です。たとえば、時間の計測には 24 進法 (24 時間が 1 日) と 10 進法があります。 60 秒は 1 日です)、古代には 16 進数も使用されました (0.5 ポンドについて考えてください)。ただし、コンピュータ処理では電流はオンとオフの 2 つの状態しかないため、2 進数のデータしか処理できませんが、これは人間には理解しにくいため、10 進数とその中間の状態として 8 進数と 16 進数が使用されます。バイナリ変換の様子。
ES3 では 8 進数、10 進数、16 進数が使用できますが、ES5 では 8 進数が無効になっています。
8 進数: 0 から始まり、その後に 8 進数 (0 ~ 7) が続きます。数値が 7 を超える場合、先頭の 0 は無視され、10 進数として扱われます (例: 08)。 10 進数の 8 として解析されます。
16 進数: 数字の 0 と文字 x で始まり、その後に一連の 16 進数 (0-9a-fA-F) が続きます。
10 進法: すべての数字を 1 つずつ直接書くことも、科学的表記法を使用することもできます (理解できない場合は、中学校の数学の教科書を探して見てください)。
(3) 特殊な値: ECMAScript には、注意が必要な 2 つの特殊な値 NaN と Infinity があります。前者は数値ではない (Not a Number) を意味し、後者は数値を意味します。表現範囲内にない値は、方向を示すために正および負の符号を使用することもできます。これら 2 つの特別な値について、ここでは具体的な操作ルールについては検討しません (興味がある場合は、自分でテストしてください。以下にいくつかの例も示します)。
A. val==NaN を使用して変数が NaN であるかどうかを判断することはできませんが、グローバル isNaN() 関数を使用します。この関数はパラメータを受け取り、パラメータが数値に変換できる場合は true を返し、それ以外の場合は戻ります。間違い。
B. 範囲外かどうかを判断するために val==Infinity を使用せず、グローバルな isFinite() 関数を使用してください。この関数はパラメーターを受け入れ、パラメーター値が範囲内にある場合に true を返します。 、それ以外の場合は false を返します。ここでいう表現範囲とは、Number.MIN_VALUE から Number.MAX_VALUE までを指します。また、Number には、値がそれぞれ Infinity と -Infinity である Number.NEGATIVE_INFINITY と Number.POSITIVE_INFINITY という属性があります。
console.info(0/0); //NaN
console.info(NaN==NaN);//false
console.info(NaN 1);//NaN
console.info(NaN/NaN);//NaN
var notNumber = NaN;
console.info(notNumber==NaN);//false
console.info(isNaN(notNumber));//true
console.info(1/ 0); //無限
console.info(-1/0); //-無限
console.info(1/Infinity);//0
console.info(Infinity/Infinity); //NaN
console.info(Infinity==Infinity); //true
var inf = Infinity;
console.info(inf==Infinity); !isFinite( inf));//true
console.info(!isFinite(NaN));//true
console.info(isNaN(Infinity));//false
5. 文字列型
ECMAScript では、一般的な C 系言語とは異なり、文字型はなく、文字列型 String が単純型として使用され、そのリテラルは引用符を使用します。 (一重引用符 ' または二重引用符 ")。
(1) 文字列型の操作の場合、プラス記号 " " はオーバーロードされます。文字列に値が追加される場合は、最初に String( ) を使用して追加されます。 (2) String() を使用して変換します。未定義—>'未定義'、null—>'null'、true—>' true'、false—>'false '、数値型 Number—> 数値的に表示される文字で変換、オブジェクト Object—> call toString
コード
(3) 文字列はバックスラッシュ「"」を使用してエスケープされます。一般的なエスケープ文字は次のとおりです。
字面量 | 含义 | 字面量 | 含义 |
n | 换行 | \ | 反斜杠 |
t | 制表 | ' | 单引号 |
b | 空格 | " | 双引号 |
r | 回车 | xnn | 以十六进制代码nn表示的一个字符 |
f | 进纸 | unnnn | 以十六进制代码nnnn表示的一个Unicode字符 |

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

メモ帳++7.3.1
使いやすく無料のコードエディター

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

WebStorm Mac版
便利なJavaScript開発ツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン
