みなさん、こんにちは、私は今日は正式にはJavaScriptの文法を講演する予定始めています。
変数
js中的变量一般使用var来声明(es6的let不在本教程讨论范围内),可以用来定义任何种类的变量,如果只对变量进行了定义而没有赋值,这样变量会默认为undefined。
var a=100;
var b="hello,world";
var c=true;
可変リフト
在js中,用var定义的变量会出现提升的效果,变量一般会提升到所在作用域的最顶部,简单来说就是,如果变量在函数中,就会提升到函数最顶部,如果在全局作用域(window)中,就会提升到所有代码的最顶部。
这里给一个例子:
console.log(a);
var a=100;
//输出结果为undefined
コードはここで実際に本当です:
var a;
console.log(a);
a=100;
上部にリフトが割り当てられていないため、最終的な出力が不定となりますが、厳密なプロテストモード可変リフト下で影響されないであろう。
(アップグレード:変数はもっとjsの中に何度も宣言し、最後のステートメントだけ有効)
いいえブロックレベルのスコープありません
任意文集合括弧ペアがブロックに属し、これはコードのブロック外に定義されているのすべての変数が表示されていない、我々は、ブロックレベルのスコープと呼ばれる
ブロックレベル、例えばJavaやCなどの言語でスコープは、次のコードのように、明らかです。
#include <stdio.h>
void main()
{
int i=2;
i--;
if(i)
{
int j=3;
}
printf("%d/n",j);
}
このコードのエラーを実行します。あなたが見ることができるので、それはブロックアクセスの外ではない、場合jは文ブロックで定義されているため、C言語では、ブロックレベルのスコープを持っています。
しかし、jsの中で、それは真実ではありません。
for(var i=0;i<3;i++){}
console.log(i); //输出3
JSので、関数呼び出しの終了後、変数が自動的に破棄されているので、それだけで、関数内のスコープ変数は、VARへの外部からのアクセスを定義することはできません機能し、何のブロックレベルのスコープはありません。
(ヒント:関数内の変数varが直接宣言していないは、次のようなグローバル変数にデフォルト設定されます:= 100テスト;ファンクション外このテストは、まだデフォルトのグローバル変数のでアクセスしますが、strictモード変数に、このような文のこと)間違っています
だからのどのブロックレベルのスコープ?
、JS関数の一種で、すぐに実行変数は通話機能がなかったので、私は話すように、再び少し後で言及ので、外の世界に漏れない、一般的に定義されているがあります。
私は特定のものは、我々は、このようなように、キーワード、コメント、大文字と小文字を区別し、及びとして、自分で見るために必要なものを明確JSの各部分に焦点を当て、このチュートリアルでは、私たちができるかどうかを確認するために断片化された時にのみ適しています収穫は、私は満足して友人になります。
:この記事はで再現されたAPE→2048 https://www.mk2048.com/blog/blog.php?id=hhchj11kjhj