検索
ホームページウェブフロントエンドjsチュートリアルJavaScriptの基礎(1)_JavaScriptスキルの基本概念を全員に学習させます

学習カタログ

1. データ型

データ型

2. オペレーター

インクリメント演算子とデクリメント演算子:

ビット演算子:
ブール演算子:
加法演算子:
等価演算子

3. ステートメント
for-in ステートメント
ラベルステートメント

1. データ型

データ型

基本データ型(5種類)

未定義
ヌル
ブール値
番号
文字列

複合データ型(1種類)

オブジェクト
未定義: 未定義の値が 1 つだけあります (定義されていますが割り当てられていません)。

例:

注: var で宣言されていない場合、直接使用すると例外が報告されます (... が定義されていません)。

提案: 各 var 宣言に初期値を割り当てます。これにより、多くの予期せぬ状況が軽減されます。

例:

ヌル: わずかにあります

ブール値: リテラル値は true と false の 2 つだけです。

Boolean() 関数を使用して、任意のデータ型をブール型に変換できます。

文字列: 空でない文字=>true 空の文字=>false
数値: ゼロ以外の任意 => true 0 および NaN=> false
オブジェクト: 任意のオブジェクト=>true null=>false
未定義 未定義=>false

例:

この場合、if ステートメントを使用するときに、対応するブール変換を自動的に実行します。

if (str) {
  //str只要是非空字符、任何非零数字、任何非null对象 都是true
  //str只要是空字符、0、NaN、null、undefined 都是false
  //这样就省去了 我们一个个的判断了
  alert("true");
}
文字列: わずかに

2. 演算子 インクリメント演算子とデクリメント演算子:

【 num, --num, num, num-- 】

var age = 3, age2 = 3;age2;alert(age " " age2);

どちらも 4 ですが、違いは見当たりません。 var age = 3, age2 = 3,num1 ,num2;num1 = age 1;num2 = age2 1;alert(num1 " " num2);

さて、ここが違いです。 1 つは 4 のままですが、もう 1 つは 5 になります。なぜこのようなことが起こっているのでしょうか?優先順位が異なるだけです。Age は最初に演算子を実行し、次に Age はそれ自体に 1 を加算し、次に演算子を介して 1 を加算します。

ビット演算子: [ビットごとの NOT (~)、ビットごとの AND (&)、ビットごとの OR (|)、ビットごとの XOR (^)、左シフト (>)、符号なし右シフト(>>>)]

実際、日常生活ではほとんど使うことがないので、ここで少し学んでみましょう。

例: ビット単位ではありません

var num1 = 25; // バイナリ 00000000000000000000000000011001 var num2 = ~num1 // バイナリ 111111111111111111111111100110

アラート(num2); // -26


例: ビット単位の AND


例: ビットごとの XOR

var result = 25 & 3;
alert(result); //1
//*********************
25 = 0000 0000 0000 0000 0000 0000 0001 1001
3 = 0000 0000 0000 0000 0000 0000 0000 0011
---------------------------------------------
AND = 0000 0000 0000 0000 0000 0000 0000 0001 

例: 左に移動

例: 符号付き右シフト
var result = 25 ^ 3;
alert(result); //26
//*************
25 = 0000 0000 0000 0000 0000 0000 0001 1001
3 = 0000 0000 0000 0000 0000 0000 0000 0011
---------------------------------------------
XOR = 0000 0000 0000 0000 0000 0000 0001 1010 //十进制值 26

例: 符号なし右シフト (32 番目の負の数を表す 1 の値も移動されるため、この違いは少し大きくなります)
var oldValue = 2; // 等于二进制的 10
var newValue = oldValue << 5; // 等于二进制的 1000000,十进制的 64

var oldValue = 64; // 等于二进制的 1000000
var newValue = oldValue >> 5; // 等于二进制的 10 ,即十进制的 2 
ブール演算子:

【論理否定(!)、論理積(&&)、論理和(||)】

ここで注意しなければならないのは、&& と || は短絡演算であるということです。 ||前の条件が条件を満たしている場合、後続の条件はテストされません。逆に、前の条件が条件を満たしていない場合、後続の条件は検出されません。
var oldValue = -64; // 等于二进制的 11111111111111111111111111000000
var newValue = oldValue >>> 5; // 00000111111111111111111111111110 等于十进制的 134217726

例:

测试:

 

这里可以告诉大家一个小小的技巧,很多时候我们并不知道某个变量是否有值,但是我们又需要正常使用,那么我们可以给个备胎。

如:浏览器的兼容问题,在旧式浏览器中是用window.event来取事件的相关属性值,新式浏览器中是直接通过形参的形式传过来的。我们就可以。

function myonclick(ev) {
  var myevent = ev || window.event;//这样就可以保证新旧浏览器的兼容了
}

实验:  

 

加性操作符:

【加法(+)、减法(-)】

这个再熟悉不过了,不过还是有一点需要注意。

var strnum1 = "5";
var num2 = strnum1 + 3;
var num3 = strnum1 - 3;
alert("num2="+num2+" num3="+num3);//这里会是什么结果呢?

試してみましょう。

なぜこのようなことが起こっているのでしょうか?文字列と数値を追加すると、数値が文字列に変換されます。文字列と数値が減算され、文字列が数値に変換されます。

等価演算子

奇妙なことに、どうして文字列が数値と等しいのでしょうか。はい、ここでは自動変換が使用されています。しかし、そのような結果を見たくない場合はどうすればよいでしょうか?

var num1 = "5";var num2 = 5;var isEqual = num1===num2;alert("num1 は num2 に等しいか:" isEqual);

はい、=== をすべて等しいものとして使用できます。値だけでなく型も比較します。

3. ステートメント

for-in ステートメント for ループ ステートメントはよく使用されますが、for-in はあまり使用されないかもしれません。 (for-in ループは、配列以外のオブジェクトを走査するために使用する必要があります。ループに for-in を使用することは、「列挙」とも呼ばれます。) 例:

var obj = {id:2,name:"張三"};var str = "";for(o in obj){ str = "属性: " o " 値: " obj[o] " ";}アラート(str);

ラベルステートメント

複数のネストされたループ内のループの 2 番目のレベルから飛び出たいと思ったことはありますか?一般に、break または continue を使用して最も内側のループから飛び出すか、return を使用して関数全体から飛び出すことしかできません。予想もしなかったのは、ループから抜け出すことができるラベル ステートメントも存在するということです。

例:

var num = 0;outermost:for (var i=0; i


さて、最初の記事はこれでほぼ完成です。最後に、いくつか興味深い質問をさせていただきます。

1. なぜ 1=0.9999999999…… 3. なぜアラート(0123 4)//87

4 つ。


var obj1 = {}; obj1.name2 = "張三";
var str1 = "テスト" str1.name2 = "李思";
alert(obj1.name2 " " str1.name2);

//ポップアップ値は何ですか


5.



var obj1 = { name2: "111" };
var obj2 = obj1;
obj1.name2 = "222";

alert(obj2.name2);//ここに何が表示されますか?

obj1 = { name2: "333" };
alert(obj2.name2);//ここに何が表示されますか?


6、


var fun = function (num1) {
If (num1 1 を返す;

}

else {
return num1 * fun(num1 - 1);

}

}
var fun2 = 楽しい;
fun = function () {
1 を返します;
}
alert(fun2(5));//ここで何が表示されますか?


JavaScript の基本的なデータ型を皆さんに紹介する時間はまだあります


JavaScriptの基本データ型には、数値/文字列/ブール値/オブジェクト/関数/未定義の6種類があります。

2.1数値型

数値型は、64 ビット浮動小数点値を格納するために使用されます。しかし、JavaScript は複素数や分数などの非整数も表す必要があるため、0 ~ 2e64 の間のすべての値を表すことはできません。 64 ビットの場合、数値の小数部分を格納するのに 11 ビットが必要で、符号を表すのに 1 ビットが使用されるため、JavaScript は実際に -2e52 から 2e52 までの値を表すことができます。

2.2 文字列型

文字列タイプはテキストを表すために使用されます。引用符内に配置された記号は文字列と見なされますが、特殊な記号はエスケープする必要がある場合があります。

2.3 ブール型

ブール型には、true と false の 2 つの値のみが含まれます。プログラム内でさまざまなブール式を使用して true または false を取得し、さまざまなビジネス ブランチの処理を実装できます。

式には複数の条件を含めることができ、計算時の優先順位は次のとおりです。 || が最も低く、次に &&、最後に比較演算子が続きます。他の演算子 (例!)。

  和其他许多语言一样,对于&&来说,当前面的条件为false时,后面的条件不再计算,对于||来说,当前面的条件为true时,后面的条件不再计算。

  来看下面的例子:

function conditionTest(){
   var a = ;
   var b = ;
   var c = {"key":"old"};
   print(c["key"]);
   if (a==) print("a = ");
   if (a== && b==) print("a == && b == ");
   if (a== || changeValue(c)) print(c["key"]);
   if (a== && changeValue(c)) print(c["key"]);
 }
 function changeValue(obj){
   obj["key"] = "changed";
   return true;
 }

  它的输出结果如下:

old
a = 1
a == 1 && b == 1
old
changed

  可以看出,在使用||时,没有调用changeValue方法。

  2.4 undefined类型

  当我们声明了一个变量,但是没有对其赋值时,它就是undefined的,就像下面这样

 var b;
 print(b);

  在Javascript中,还有一个和undefined类似的值:null。undefined表示“变量已声明但是没有复制”,null表示“变量已赋值但为空”,需要注意的是undefined==null的值为true。

  2.5 类型转换

  我们在上面提到了undefined == null的值是true,但我们使用typeof操作时可以发现,null是object类型,这说明在比较的过程中,发生了类型转换。

  类型转换是指将一种类型的值转换成另外一种类型的值。我们使用==进行比较时,会有类型转换,我们可以使用===来禁止类型转换。

  来看下面的例子:

function convertTypeTest(){
   var a = ;
   var b = "";
   print ("a:" + a);
   print ("b:" + b);
   print ("type of a:" + typeof a);
   print ("type of b:" + typeof b);
   print ("a==b:" + (a == b));
   print ("a===b:" + (a === b));
   print ("a===Number(b):" + (a === Number(b)));
   print ("String(a)===b:" + (String(a) === b));
   print ("type of undefined:" + typeof undefined);
   print ("type of null:" + typeof null);
   print ("undefined==null:" + (undefined == null));
   print ("undefined===null:" + (undefined === null));
 }

  输出结果如下:

a:1
b:1
type of a:number
type of b:string
a==b:true
a===b:false
a===Number(b):true
String(a)===b:true
type of undefined:undefined
type of null:object
undefined==null:true
undefined===null:false

可以很明显看到==和===的区别。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScriptの進化:現在の傾向と将来の見通しJavaScriptの進化:現在の傾向と将来の見通しApr 10, 2025 am 09:33 AM

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

javascriptの分解:それが何をするのか、なぜそれが重要なのかjavascriptの分解:それが何をするのか、なぜそれが重要なのかApr 09, 2025 am 12:07 AM

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

pythonまたはjavascriptの方がいいですか?pythonまたはjavascriptの方がいいですか?Apr 06, 2025 am 12:14 AM

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

JavaScriptをインストールするにはどうすればよいですか?JavaScriptをインストールするにはどうすればよいですか?Apr 05, 2025 am 12:16 AM

JavaScriptは、最新のブラウザにすでに組み込まれているため、インストールを必要としません。開始するには、テキストエディターとブラウザのみが必要です。 1)ブラウザ環境では、タグを介してHTMLファイルを埋め込んで実行します。 2)node.js環境では、node.jsをダウンロードしてインストールした後、コマンドラインを介してJavaScriptファイルを実行します。

クォーツでタスクが開始される前に通知を送信する方法は?クォーツでタスクが開始される前に通知を送信する方法は?Apr 04, 2025 pm 09:24 PM

Quartzタイマーを使用してタスクをスケジュールする場合、Quartzでタスク通知を事前に送信する方法、タスクの実行時間はCron式によって設定されます。今...

JavaScriptでは、コンストラクターのプロトタイプチェーンで関数のパラメーターを取得する方法は?JavaScriptでは、コンストラクターのプロトタイプチェーンで関数のパラメーターを取得する方法は?Apr 04, 2025 pm 09:21 PM

JavaScriptプログラミング、プロトタイプチェーンの関数パラメーターの理解と操作のJavaScriptのプロトタイプチェーンの関数のパラメーターを取得する方法は、一般的で重要なタスクです...

WeChat MiniプログラムWebViewでVUE.JSダイナミックスタイルの変位が失敗した理由は何ですか?WeChat MiniプログラムWebViewでVUE.JSダイナミックスタイルの変位が失敗した理由は何ですか?Apr 04, 2025 pm 09:18 PM

WeChatアプレットWeb-ViewでVue.jsを使用する動的スタイルの変位障害がvue.jsを使用している理由の分析...

TamperMonkeyで複数のリンクの同時GETリクエストを実装し、順番に戻る結果を決定する方法は?TamperMonkeyで複数のリンクの同時GETリクエストを実装し、順番に戻る結果を決定する方法は?Apr 04, 2025 pm 09:15 PM

複数のリンクの同時ゲットリクエストを作成し、結果を返すために順番に判断する方法は? TamperMonkeyスクリプトでは、複数のチェーンを使用する必要があることがよくあります...

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ヘンタイを無料で生成します。

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Mac版

SublimeText3 Mac版

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

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、