検索
ホームページウェブフロントエンドjsチュートリアルJavaScript が変数を宣言するために使用するキーワードはどれですか?

js では、var、let、const キーワード宣言を使用できます。 var で宣言された変数は、あらゆるタイプの値を保存するために使用でき、スコープは関数スコープです。let で宣言された変数は {} で使用され、変数のスコープはブロックレベルのドメインに制限されます。const が使用されます。定数を変更するため、宣言位置は制限されません。

JavaScript が変数を宣言するために使用するキーワードはどれですか?

このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。

変数キーワード var、let、const を宣言します

ECMAScript 変数は大まかに型付けされています。つまり、変数はあらゆるタイプのデータの保存に使用でき、各変数は保存に使用される単なる変数です。 any 値の名前付きプレースホルダー。

1.var キーワード

var で宣言された変数は、JavaScript の他の言語と同様に、あらゆるタイプの値を保存するために使用できます (未定義の特別な値は初期化せずに保存されます)。変数を定義するときに、変数に値を割り当てることもできます。変数は、割り当てられた値を保存する変数として定義されます。JavaScript は動的言語であるため、変数を初期化するときに、割り当てられたデータ型として識別されません、しかし、ただの簡単な課題です。次に、保存された値を変更できるだけでなく、値の型も変更できます。

var message = "hi";
	message = 100;

1.1.var 宣言スコープ

var 演算子を使用して定義された変数は、ローカル変数になります。それを含む関数の変数。たとえば、関数内で var を使用して変数を定義すると、関数の終了時に変数が破棄されることになります。これがガベージ コレクションと呼ばれるものだと思います。

function test( ) {
		vart message = "hi";	//局部变量
	}
test( );
console.log(message);	//报错!

関数が呼び出された後、変数はしたがって、最後の行ではエラーが報告されます。ただし、関数で変数を定義するときに var 演算子を省略すると、グローバル変数を作成できます。

function test( )  {
	message = "hi";	//全局变量
}
test( );
console.log(message);	//"hi"

関数 test() が 1 回呼び出されるだけで、グローバル変数メッセージが定義され、グローバル変数メッセージを作成できます。関数外でアクセスされます。ただし、ローカル スコープで定義されたグローバル変数は保守が難しいため、一般的には推奨されません。

1.2. Var 宣言の昇格

var キーワードを使用して宣言された変数は、関数スコープの最上位、いわゆる「ホイスト」 (ホイスト) に自動的に昇格されます。 , すべての変数宣言がプルされます 関数スコープの先頭に移動します:

function fool( ) {
	console.log(age);
	var age = 28;
}
fool( );	//undefined

ここではエラーは報告されませんが、未定義が表示されます。ECMAScript は実行時に次のコードと同等として扱います:

function fool( ) {
	var age;
	console.log(age);
	age = 28;
}
fool( );	//undefined

2 .let 宣言

let と var の関数は似ていますが、非常に重要な違いがあります。最も明らかな違いは、let 宣言のスコープがブロック スコープであるのに対し、var 宣言のスコープは関数スコープであることです。

if (true) {
	let age = 26;
	console.log(age);	//26
}
console.log(age);	//ReferceError:age没有定义

age 変数のスコープはブロックの内部に制限されます。したがって、if ブロックの外では参照できません。ブロック スコープは関数スコープのサブセットであるため、var に適用されるのと同じスコープ制限が let にも適用されます。

Let では、同じスコープ内に冗長な宣言を出現させることもできません (var can):

var name;
var name;
let age;
let age;	//SyntaxError;标识符age已经声明过了

さらに、冗長な宣言エラーは、var と let を混合しても影響を受けません。これら 2 つのキーワードは、異なる型の変数を宣言するものではなく、関連するスコープ内で変数がどのように存在するかを示すだけです。

2.1. 一時的なデッドゾーン

let と var のもう 1 つの重要な違いは、let で宣言された変数はスコープ内でプロモートされないことです:

//name会提升
console.log(name);	//undefined
var name = 'matt';

//name不会提升
console.log(name);	//ReferenceError:name没有定义
let name = 'matt';

2.2. グローバル宣言

var とは異なり、let を使用してグローバル スコープで宣言された変数はウィンドウ オブジェクトの属性にはなりません (var で宣言された変数は属性になります):

var name = 'matt';
console.log(window.name);	//'matt'

let name = 'matt';
console.log(window.name);	//undefined

ただし、let 宣言は依然としてグローバル スコープの場合、対応する変数はページの宣言サイクル内で保持されます。

2.3. 条件宣言

let のスコープはブロックであるため、同じ名前の変数が以前に let を使用して宣言されているかどうかを確認することはできません。宣言せずに宣言します。 try/catch または typeof 演算子を使用しても、条件ブロック内の let 宣言の範囲がそのブロックに制限されているため、この問題を解決することはできません。このため、新しい ES6 宣言キーワード let は条件付き宣言パターンに依存できません。

2.4. for ループ内の Let ステートメント

var を使用する場合、最も一般的な問題は、反復変数の奇妙な宣言と変更です:

for(var i = 0; i < 5; ++i) {
	setTimeout( () => console.log(i) ,0)
}
//你可能以为会输出0、1、2、3、4
//实际上输出的是5、5、5、5、5

ループを終了するときその間、反復変数には、ループを終了する原因となった値が保持されます。 5. setTimeout タイムアウト ロジックが後で実行される場合、i は同じ変数であるため、最終出力は同じ値になります。

let を使用して反復変数を宣言すると、JavaScript エンジンはバックグラウンドで反復ループごとに新しい反復変数を宣言し、各 setTimeout は異なる変数インスタンスを参照します:

for(let i = 0; i < 5; ++i) {
	setTimeout( () => console.log(i) ,0)
}
//会输出0、1、2、3、4

3 .const 宣言

const の動作は基本的に let と同じです。唯一の重要な違いは、変数を宣言すると同時に変数を初期化する必要があることと、const で宣言された変数を変更しようとすることです。実行時エラーが発生します。

    const声明的限制只适用于它指向的变量的引用。如果const变量引用的是一个对象,那么修改这个对象内部的属性并不违反const的限制:

const person = { };
person.name = &#39;matt&#39;;

4.使用建议

let和const是ES6中新增的,从客观上为JavaScript更精确地声明作用域和语义提供更好的支持。

4.1.不使用var

    限制自己只使用let和const有助于提升代码质量,因为变量有了明确的作用域、声明位置,以及不变的值。

4.2.const优先,let次之

    使用const声明可以让浏览器运行时强制保持变量不变,也可以让静态代码分析工具提前发现不合法的赋值操作。因此,我们应该优先使用const来声明变量,只有在提前知道未来会有修改时再使用let。

【推荐学习:javascript高级教程

以上がJavaScript が変数を宣言するために使用するキーワードはどれですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
es6数组怎么去掉重复并且重新排序es6数组怎么去掉重复并且重新排序May 05, 2022 pm 07:08 PM

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

JavaScript的Symbol类型、隐藏属性及全局注册表详解JavaScript的Symbol类型、隐藏属性及全局注册表详解Jun 02, 2022 am 11:50 AM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

原来利用纯CSS也能实现文字轮播与图片轮播!原来利用纯CSS也能实现文字轮播与图片轮播!Jun 10, 2022 pm 01:00 PM

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

JavaScript对象的构造函数和new操作符(实例详解)JavaScript对象的构造函数和new操作符(实例详解)May 10, 2022 pm 06:16 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

JavaScript面向对象详细解析之属性描述符JavaScript面向对象详细解析之属性描述符May 27, 2022 pm 05:29 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

javascript怎么移除元素点击事件javascript怎么移除元素点击事件Apr 11, 2022 pm 04:51 PM

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

foreach是es6里的吗foreach是es6里的吗May 05, 2022 pm 05:59 PM

foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){...})”;该方法不处理空数组。

整理总结JavaScript常见的BOM操作整理总结JavaScript常见的BOM操作Jun 01, 2022 am 11:43 AM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。

See all articles

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境