JavaScript学習のまとめ(1)~JavaScript入門の基礎_javascriptスキル
1. JavaScript 言語の機能
1.1. JavaScript はオブジェクト駆動型およびイベント駆動型 (動的)
Web サービス プログラムを経由せずに、ユーザーまたは顧客の入力に直接応答できます。イベント駆動型の方法でユーザーに応答します。いわゆるイベントドリブンとは、ホームページ上で何らかの操作を行うことで発生するアクションのことを「イベント」と呼びます。例えば、マウスを押す、ウィンドウを移動する、メニューを選択するなどをイベントとみなすことができます。イベントが発生すると、対応するイベント応答がトリガーされる場合があります。
1.2. JavaScript はクロスプラットフォームです
JavaScript はブラウザ自体に依存しており、オペレーティング システムとは関係ありません。
2. JavaScript 変数
2.1. 変数を定義する
変数を定義するときは、常に「var 変数名」を使用します。例: var str; キーワード var
を省略することもできます。2.2. JavaScript 変数の型を決定する方法
JavaScript の変数のデータ型は、JS エンジンによって決定されます
1 2 3 4 5 |
|
2.3. typeof キーワードを使用して、変数
で表される特定のデータ型を表示します。typeof 演算子には 1 つのパラメーターがあり、それはチェックされる変数または値です。例:
1 2 3 |
|
変数または値に対して typeof 演算子を呼び出すと、次のいずれかの値が返されます:
未定義 - 変数の型が未定義の場合
boolean - 変数の型が Boolean の場合
number - 変数の型が Number の場合
string - 変数の型が String の場合
オブジェクト - 変数が参照型または Null 型の場合
テストコード:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
実行結果:
3. JavaScript データ型
JavaScript には、基本データ型と参照データ型という 2 つの異なるデータ型が含まれています。プリミティブ型は単純なデータを指し、参照型は複数の値で構成されるオブジェクトを指します。変数に値を割り当てるとき、パーサーが最初に行う必要があるのは、その値がプリミティブ型の値であるか参照型の値であるかを確認することです。
3.1. 基本的なデータ型
5 つの一般的な基本データ型:
ブール値
番号
文字列
未定義
ヌル
これら 5 つの基本データ型は、変数に格納されている実際の値を直接操作できます。
3.1.1、数値型(Number)とブール型(Boolean)
以下のコードを見てください:
1 2 3 4 5 6 7 8 9 10 11 |
|
実行結果:
実行結果から、b の値は a の値のコピーであることがわかります。2 つの変数の値は等しいですが、2 つの変数には 2 つの異なる基本データ型の値が格納されています。 b は a のコピーのコピーを保存するだけです。したがって、b の値が 20 に変化しても、a の値は 10 のままです。 2 つのブール変数 b1 と b2 も基本データ型であり、2 つの異なる基本データ型値も格納されます。b2 には 1 のコピーが格納されます。したがって、b2 の値が false に変化しても、b1 の値は true のままです。
次の図は、この基本的なデータ型の割り当てプロセスを示しています。
スタックメモリ
3.1.2. 文字列型(String)
JavaScript の String は特別な基本データ型であり、多くの言語では String はオブジェクトの形式で表現されますが、JavaScript では String は基本データ型として扱われ、値によって渡されます。しかし、それはかなり特殊な基本タイプです。
以下の例を見てください:
1 2 3 4 5 6 |
|
运行结果:
从运行结果可以看到,仿佛strA通过值传递的方式复制了一份给了strB。当strA改变的时候,strB并没有改变,似乎我们已经可以下结论,String就是个基本数据类型。
可是,因为String是可以任意长度的,通过值传递,一个一个的复制字节显示效率依然很低,看起来String也可以当作引用类型。
看下面例子:
1 2 3 |
|
结果显示:a.name=undefined
运行结果:
运行结果显示,String无法当作一个对象来处理。这也证明了一点:基本类型虽然也可以添加属性,也不会报错,经测试添加完之后却是无法访问的,实际上,javascript里的String是不可以改变的,javascript也没有提供任何一个改变字符串的方法和语法。
看下面的例子:
1 2 3 |
|
运行结果:
这样做,没并有改变String字符串"myobject",只b引用了另一个字符串"bj","myobject"被回收了。
所以可以这样讲,String实际上并不符合上面两种数据类型分类。它是具有两方面属性介于两都之间的一种特殊类型。
3.1.3、Null 类型
Null类型只有一个专用值 null,值 undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的。
1 2 3 |
|
运行结果:
尽管这两个值相等,但它们的含义不同。undefined 是声明了变量但未对其初始化时赋予该变量的值,null 则用于表示尚未存在的对象(typeof 运算符对于 null 值会返回 "Object"。)。如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是 null。
3.1.4、Undefined 类型
Undefined 类型只有一个值,即 undefined。当声明的变量未初始化时,该变量的默认值是 undefined。
var oTemp;
前面一行代码声明变量 oTemp,没有初始值。该变量将被赋予值 undefined,即 undefined 类型的字面量。可以用下面的代码段测试该变量的值是否等于 undefined:
1 2 3 4 |
|
运行结果:
运行结果显示 "true",说明这两个值确实相等。
可以用 typeof 运算符显示该变量所代表的的数据类型是undefined类型
1 2 3 4 |
|
值 undefined 并不同于未定义的值。但是,typeof 运算符并不真正区分这两种值。考虑下面的代码:
1 2 3 4 5 |
|
运行结果:
两个变量输出的都是 "undefined",即使只有变量 oTemp2 从未被声明过。如果对oTemp2 使用除 typeof 之外的其他运算符的话,会引起错误,因为其他运算符只能用于已声明的变量上。
下面的代码将引发错误:
1 2 |
|
当函数无明确返回值时,返回的也是值 "undefined",如下所示:
1 2 3 4 |
|
运行结果:
3.2、引用数据类型
javascript引用数据类型是保存在堆内存中的对象,JavaScript不允许直接访问堆内存空间中的位置和操作堆内存空间,只能通过操作对象在栈内存中的引用地址。所以引用类型的数据,在栈内存中保存的实际上是对象在堆内存中的引用地址。通过这个引用地址可以快速查找到保存在堆内存中的对象。
看下面的例子:
1 2 3 4 5 6 |
|
运行结果:
由上面例子,我们声明了一个引用数据类型变量obj1,并把它赋值给了另外一个引用数据类型变量obj2。当我们obj2添加了一个name属性并赋值" 孤傲苍狼"。obj1同样拥有了和obj2一样的name属性。说明这两个引用数据类型变量指向同一个对象。obj1赋值给obj2,实际只是把这个对象在栈内存的引用地址复制了一份给了obj2,但它们本质上共同指向了堆内存中的同一个对象。
下面我们来演示这个引用数据类型赋值过程
自然,给obj2添加name属性,实际上是给堆内存中的对象添加了name属性,obj2和obj1在栈内存中保存的只是堆内存对象的引用地址,虽然也是拷贝了一份,但指向的对象却是同一个。故而改变obj2引起了obj1的改变。
一般而言,基本数据类型是由固定数目的字节组成,这些字节可以在解析器的较底层进行操作,比如Number和 Boolean;而引用数据类型,可以包含任意数目的属性和元素,因此它们无法像基本数据类型那样很容易的操作。
由于,引用数据类型的值是会发生变化的, 所以通过跟基本数据类型一样的值传递方式,也就没什么意义了,因为会牵涉到大量的内存的复制和比较,效率太低。所以引用数据类型是通过引用传递方式,实际传递的只是对象的一个地址。
比如Array和Function,因为它们都是特殊的对象所以它们都是引用类型。另外,引用类型是可以添加属性,基本类型虽然也可以添加属性,也不会报错,经测试添加完之后却是无法访问的。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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

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

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

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

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

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

フロントエンドのVSCodeと同様に、パネルドラッグアンドドロップ調整機能の実装を調べます。フロントエンド開発では、VSCODEと同様のVSCODEを実装する方法...
