es6 スコープの詳細

青灯夜游
リリース: 2019-11-30 17:55:14
転載
1848 人が閲覧しました

最近es6の知識を勉強し直しました。動画や情報をもとに自分なりの理解をメモしてみましたので、皆さんのお役に立てれば幸いです。 #####################範囲?

es6 スコープの詳細

ほぼすべてのプログラミング言語の最も基本的なモデルの 1 つは、変数に値を格納し、これらの値を取得および変更する機能です。変数と値の取得 この機能はプログラムにステータスを与えます。このような概念がないと、プログラムはいくつかのタスクを実行できますが、そのタスクは非常に限定され、あまり面白くなくなります。しかし、これらの変数はどこに保存され、どのように読み取られるのでしょうか?この目標を達成するには、スコープ、

#[関連コースの推奨事項: JavaScript ビデオ チュートリアル ]## というルールを策定する必要があります。 # スコープの主な種類は何ですか?

作用域主要分为全局作用域、函数作用域、动态作用域、块级作用域;
ログイン後にコピー

オブジェクト

タイプ

ウィンドウfn関数スコープ ブロック-レベル スコープ動的スコープスコープ ルックアップ ルール? 1. 実行環境はグローバル スコープと関数スコープに分かれています; 3. 関数のローカル環境は関数スコープ内の変数にアクセスできるだけでなく、親環境やグローバル環境にもアクセスできます; 4. グローバル環境はグローバルに宣言された変数と関数にのみアクセスできますが、グローバル環境はグローバルに宣言された変数と関数にのみアクセスできます。ローカル環境のデータに直接アクセスすることはできません。
グローバル スコープ
{}
this
2. 新しい実行環境に入るたびに、変数や関数を検索するためのスコープが作成されます。

グローバル スコープ

関数の外で定義された変数はグローバル変数です。
グローバル変数にはグローバル スコープがあります。Web ページ内のすべてのスクリプトと関数を使用できます。
変数が関数内で (var キーワードを使用せずに) 宣言されていない場合、その変数はグローバル変数です。
// 以下实例中 carName 在函数内,但是为全局变量。
// 此处可调用 carName 变量
 
function myFunction() {
    carName = "Volvo";
    // 此处可调用 carName 变量
}
ログイン後にコピー

関数内やコードブロック内で定義されていない変数は、window/global の属性として存在します。var で定義されていない変数は削除できますが、グローバル変数は削除できません。

関数スコープ

関数内で宣言された変数は関数スコープと呼ばれます。関数内の変数には外部から
直接アクセスできませんが、return または Closure を通じてアクセスできます。

// 此处不能调用 carName 变量
function myFunction() {
    let carName = "Volvo";
    // 函数内可调用 carName 变量
}
<!--rerurn-->
function myFunction() {
    let carName = "Volvo";
    rerurn carName;
    // 函数内可调用 carName 变量
}
let fn=myFunction()//Volvo;

<!--闭包-->
function myFunction() {
    let carName = "Volvo";
    function getName(){
        console.log(carName)
    }
    return getName();
    // 函数内可调用 carName 变量
}
myFunction() //Volvo
ログイン後にコピー
ブロックレベル スコープ

es6 が登場したら、let コマンドを使用して新しいブロックレベル スコープを追加します。外側のスコープは内側のスコープを取得できません。非常に安全かつ明確であり、外層と内層で同じ変数名を使用しても相互に干渉しません。

关于暂时性死区
* 在使用let命令声明变量之前,该变量都是不可用的。如果去调用这种情况被称为暂时性死区。
let 特性
*  let不存在变量提升
*  let不允许重复声明
*  拥有块级作用域
*  不可以使用window去调用
const 特性
*  定义常量
*  不允许修改常量的值
*  不允许先声明后赋值
*  同上
if(1){
  let a = 1
  console.log(a)
}
ログイン後にコピー

動的スコープ

動的スコープでは、関数とスコープがどこでどのように宣言されるかは関係なく、どこから呼び出されるかだけが問題となります。このメカニズムはこれと非常によく似ています;実際には、js から拡張される字句スコープ (静的スコープ) があります。字句スコープの反対は動的スコープです。関数のスコープは、関数が#

let name='youzi';
function getName(){
    let name="tuzi";
    function getAge(){
        console.log(name)
    }
    return getAge();
}
getName() //tuzi
ログイン後にコピー

字句スコープ

JavaScript では字句スコープが使用され、関数のスコープは関数の定義時に決定されます。

<!--  这段代码执行就是按照词法作用域去执行的。在函数定义时已经被决定了 -->
let name='youzi';

function getName(){
   console.log(name)
}
function getAge(){
    let name='tuzi';
    getName()
}
getAge() //youzi
ログイン後にコピー
この記事は

js チュートリアル

列から引用したものです。ぜひ学習してください。

以上がes6 スコープの詳細の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!