目次
1 キーワードと予約語 " >1 キーワードと予約語
数据范围" >数据范围
 NaN" > NaN
string" >string
 字符字面量" > 字符字面量
字符串的特点" >字符串的特点
转换为字符串" >转换为字符串
4 Object类型" >4 Object类型
5 JavaScript中+的作用" >5 JavaScript中+的作用
6 javascript中-的作用" >6 javascript中-的作用
7 相等操作符" >7 相等操作符
8 函数" >8 函数
ホームページ ウェブフロントエンド jsチュートリアル JavaScript初心者が知らないこと(2)

JavaScript初心者が知らないこと(2)

Mar 15, 2018 pm 03:04 PM
javascript 初心者

この記事では、JavaScript の基本的な構文とデータ型を主に説明します。もちろん、まだ最も基本的なものなので、詳細については説明しません。これから始める学生にぜひご覧ください。このタイトルを見ると、単なる構文とデータ型のことだと思いませんか? ほんの少しの知識で、私はすでにそれを知っていました。

1 キーワードと予約語

ECMA-262 は、特定の目的を持つキーワードのセットについて説明します。これらのキーワードは、制御ステートメントの開始または終了を示したり、特定のアクションを実行したりするために使用できます。原則として、キーワードも言語で予約されており、識別子として使用することはできません。以下は ECMAScript のすべてのキーワードです (* が付いているものは第 5 版の新しいキーワードです):

キャッチ続ける関数の場合試してみる
ケース else 新しい var
最後に 戻る 無効
スイッチ の間 デバッガー*
この with デフォルト
投げる 削除

ECMA-262 では、識別子として使用できない別の予約語のセットについても説明しています。ただし、予約語は言語内でまだ具体的に使用されていません。しかし、将来的にはキーワードとして使用される可能性があります。以下はすべて ECMA-262 バージョン 3 で定義された予約語です:

abstract enum int short
ブール値 エクスポート インターフェース 静的
バイト 拡張 長い スーパー
char final ネイティブ 同期
クラス float パッケージ スロー
const goto private transient
デバッガ 実装 保護 揮発性
double インポート 公開

5thこのバージョンでは、非厳密モードで実行する場合の予約語が次のように削減されます:

厳密モードでは、バージョン 5 は次の予約語にも制限を課します:

class enum extends super
定数 エクスポート インポート
プライベート静的レット保護収量

let と yield は第 5 版の新しい予約語であることに注意してください。他の予約語は第 3 版で定義されています。互換性を最大限に確保するために、第 3 版で定義されている予約語に加え、let および yield を参照してプログラミングすることをお勧めします。

ECMAScript 3 を実装する JavaScript エンジンでキーワードを識別子として使用すると、「識別子が必要です」エラーが発生します。予約語を識別子として使用すると、特定のエンジンに応じて同じエラーが発生する場合とそうでない場合があります。

第5版では、キーワードと予約語の使用ルールが若干変更されました。キーワードと予約語はまだ識別子として使用できませんが、オブジェクトのプロパティ名として使用できるようになりました。一般に、将来の ECMAScript バージョンとの互換性を維持するには、キーワードや予約語を識別子やプロパティ名として使用しないことをお勧めします。

上記の予約語とキーワードに加えて、ECMA-262 バージョン 5 では eval と引数に制限が課されます。厳密モードでは、これら 2 つの名前を識別子または属性名として使用することはできません。使用しない場合は、エラーがスローされます。

2 データ型

ECMAscript には、次の 5 つの単純なデータ型 (基本データ型とも呼ばれます) があります。また、複雑なデータ型 (参照データとも呼ばれる) もあります。 type) – オブジェクト、オブジェクトは本質的に、順序付けされていないキーと値のペアのセットです。 ECMAscript はカスタム タイプを作成するメカニズムをサポートしておらず、すべての値は上記の 6 つのデータ タイプのいずれかになります。

typeof

この演算子 (関数ではないため、ここでは関数ではありません) は、通常、デバッグ中に 6 つの戻り値を持ちます: unknown (値が定義されている)、boolean( ブール値)、 string (文字列)、number (数値)、オブジェクト (この値はオブジェクトまたは null)、関数 (この値は関数)。 正規表現に相当し、実際には別の形式のオブジェクト(RegExp型オブジェクト)ですが、Chrome7とSafari5より前のバージョンでは関数を返し、他のブラウザはオブジェクトを返します
以下を見てみましょう 簡単な例を見てみましょう

var msg; //如果没有赋值,默认是undefinedtypeof msg;  //undefined// age 没有定义typeof age; //undefined
ログイン後にコピー

この結果は論理的に合理的です。これら 2 つの変数は技術的な観点からは本質的に異なりますが、実際には、これらの変数が実際の演算を実行することは不可能だからです。 初期化されていない変数には自動的に未定義が割り当てられる場合でも、変数を明示的に初期化できる場合は、typeof 演算子が未定義を返したときに、この変数がまだ宣言されていないことを判断できます

null と unknown の関係
console.log(undefined == null)  // trueconsole.log(undefined === null)  // false
ログイン後にコピー

実際、ECMA-262 ではそれらの等価性が true を返さなければならないと規定されているため、未定義の値は null から派生します。 null と unknown にはそのような関係がありますが、その用途はまったく異なります。いかなる状況でも変数の値を unknown に設定する必要はありませんが、同じルールは null にも不適切です。オブジェクト変数を保存することを目的としているが、実際の変数が保存されていない限り、変数は明示的に null として保存されるべきだと思います。これは、null ポインターとしての null の規則を反映するだけでなく、null と未定義をさらに区別することもできます

Number 型

Number 型は、ECMAscript で最も重要なデータ型である必要があります。この型は、IEEE754 で使用されます。整数と浮動小数点値を表します

var num1 = 070;  //表示八进制数var num2 = 079   //无效的八进制数  表示79var num3 = 0x1f  //十六进制数
ログイン後にコピー

8 進リテラルは厳密モードでは無効であり、JavaScript エンジンがエラーを報告します

浮動小数点値
<span style='font-family: 微软雅黑, "Microsoft YaHei";'>var f1 = 0.1; <br>var f2 = .1;  //虽然是有效的0.1但是不推荐var f3 = 1.0; //会自动转换为1</span>
ログイン後にコピー

一部の非常に大きい値または極端に小さい値の場合科学表記法でも表現できます

var f4 = 3.125e7; //31250000
ログイン後にコピー

在这里还是要提示一下众所周知的浮点数不能比较相等法则,
在javascript中浮点数的最高精度是17位的小数,但在进行算术计算的时候精确度远远不如整数,例如0.1+0.2不等于0.3而是等于0.0000000000000004(4e-17)
这是使用基于IEEE754数据浮点计算的通病

数据范围

由于内存的限制,ECMAscript并不能保存世界上所有的数,能保存的数能在浏览器中显示出来(通过Number.MAX_VALUE),最小值是(Number.MIN_VALUE)
当超出这个范围的时候,大于就变为Infinity,小于就变为-Infinity

<span style='font-family: 微软雅黑, "Microsoft YaHei";'>var big = Number.MAX_VALUE + Number.MAX_VALUE;<br>console.log(big);  //Infinity</span>
ログイン後にコピー

可以使用isFinite()函数判断这个值是否在最大值和最小值之间,如果在就返回true
通过访问Number.NEGATIVE_INFINITY和Number.POSITIVE_INFINITY来得到-Infinity和Infinity

 NaN

NaN,非数值类型(Not a Number)是一个特殊的值,这个数值表示一个应该返回数值的情况结果没有返回数值,在ECMAscript中,任何数值除以0并不会导致错误,会返回一个NaN,因此并不会影响代码的运行。
Nan本身有两个特点:任何设置NaN的操作都会返回NaN,这个特点在多步计算的时候可能导致错误,其次Nan和任何数值都不想等,包括本身:

<span style='font-family: 微软雅黑, "Microsoft YaHei";'>console.log(NaN == Infinity)<br>console.log(NaN == 1)<br>console.log(NaN == NaN)<br>console.log(NaN == 1/0)//以上结果返回的都是false//下面是判断数据类型isNaN(NaN)  //trueisNaN('123') //false,进行了数据类型的转换isNaN('f5') //trueisNaN(4)   //false</span>
ログイン後にコピー

运用isNaN()函数可以判断这个变量是否是NaN类型的。
最神奇的是isNaN也是支持对象操作的,在基于对象调用isNaN函数时,会首先调用对象的valueOf方法,然后确定该方法返回的值是否可以转换为数值,如果不能就基于这个返回值再调用toString()方法,在测试返回值

string

对应于string类型,讨论的会比较少一点,string类型用于友零或者多个16位的Unicode字符组成的字符序列,即字符串。js中的单引号和双引号是没有区别的(想对于PHP来讲)。

 字符字面量

转义的只是在这里就不多说了,
字面量在这里只说一点:
var text = "this is \u30a3"这个的长度是9因为\u30a3转义后表示一个字符

字符串的特点

字符串在我们平常的开发当中我们是一直在用的,但是很少人知道其中的原理,下面我们就来讨论一下字符串的特点。
ECMAscript中的字符串是不可变的,也就是说,字符串一旦被创建,他们的值就不能被改变。要改变某个变量保存的字符串就先要销毁原来的字符串,然后用一个新的值来填充该变量,例如下面的代码:
var lang = 'java';
lang = lang + 'script';
以上的代码是变量lang中包含字符串‘java’。而第二行代码把lang的值重新定义为‘java’与’script’的结合,实际上这个操作过程如下:
1. 首先创建一个能容纳10个字符的新字符串
2. 然后将这个字符串中填充’java’和’script’
3. 最后一步是销毁原来的’java’字符串和’script’字符串,因为这两个字符串已经没用了

转换为字符串

在这里主要注意的是null和undefined是没有toString()方法的,如果想要把他们转换为字符串可以使用转型函数String(),能把任何类型的值转换为字符串var val = null;String(val)
当使用数值转换为字符串的时候,可以在toString()传递一个参数,表示把数值变为多少进制的字符串:var num = 10;num.toString(2)返回的是1010;

4 Object类型

ECMAscript中对象其实就是一组数据和功能的集合。
三种实例化一个对象的方法:

var o = new Ocject();var o = new Object;//不推荐使用var o = {};//当今最常用的
ログイン後にコピー

object中的对象和属性在后面我们在去讨论

5 JavaScript中+的作用

这个我们在这里说的具体一点
1. 加法运算

console.log(1+2)
ログイン後にコピー
  1. 字符串的连接

<span style='font-family: 微软雅黑, "Microsoft YaHei";'>var a ="121",<br>    b =56,<br>    c ="ss";<br>console.log(a+b);//12156console.log(a+c);//121ss</span>
ログイン後にコピー
  1. 数值和字符串之间的转换

<span style="font-family: 微软雅黑, "Microsoft YaHei";">//字符串转换我数值var a = "21212";<br/>+a   //21212var b = "ss";<br/>+a //NaNvar c= "0xff";<br/>+a  //255</span>
ログイン後にコピー
<span style="font-family: 微软雅黑, "Microsoft YaHei";">//数值转换为字符串var a =45;<br/>+a;  //"45"</span>
ログイン後にコピー
//布尔值的转换+true  //1+fasle  //0
ログイン後にコピー

6 javascript中-的作用

减号的作用一般是都是用在正规的操作(也就是类型相同)的操作中,信息量虽然不是很大,但是还是有很多需要注意的地方,下面来举几个例子

var a = 5-true;  //4 ,true被转换了var b = NaN -1;//NaNvar c= 5-2   //3var d = 5-"2";//3  “2”被转换为2var e = 5-null; //5  null被转换为了0
ログイン後にコピー

7 相等操作符

在我们编程的时候,当使用比较的时候我们希望,有的时候类型不同可以数值一样就可以就好像(2和"2")是可以相等的,但是有时候我们希望要求数值和类型都是一样的才返回真。这就很矛盾了,在ECMAscript中的解决方案是提供两组操作数:相等和全等
相等:先转换在比较
列出一下比较特殊的比较结果

implements package public interface



表达式
null == undefinedtrue
“NaN” == NaNfalse
NaN == NaNfalse
NaN != NaNtrue
true == 2false
undefined == 0false
null == 0false

全等:仅比较不转换
全等就比较严格了,在这里就不讨论什么了。
注意:null == undefined会返回true,但是null === undefined会返回false,这是由于他们的类型不一样

8 函数

函数对于任何语言来说都是一个核心的概念。
在这里主要说一个问题,细节会在后面继续讨论
我们都是知道在函数中的arguments表示所有传进来的参数,比如说

<span style="font-family: 微软雅黑, "Microsoft YaHei";">function foo(a,b,c){<br/>    console.log(arguments[2] === c);//true}</span>
ログイン後にコピー

这个原因并不因为他们指向的是同一块内存,因为他们内存空间的值会相互同步,
arguments的值是不能被改写的如果改写的会操作

相关推荐:

JavaScript初学者不知道的事(一)

javascript初学者实践使用

给JavaScript初学者的一些最佳实践

以上がJavaScript初心者が知らないこと(2)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 Dec 17, 2023 pm 02:54 PM

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

C のエキスパートになる: 推奨される 5 つの必須コンパイラー C のエキスパートになる: 推奨される 5 つの必須コンパイラー Feb 19, 2024 pm 01:03 PM

初心者から専門家まで: C コンパイラーの 5 つの必須の推奨事項 コンピューター サイエンスの発展に伴い、プログラミング言語に興味を持つ人がますます増えています。 C 言語は、システムレベルのプログラミングで広く使用される高級言語として、常にプログラマーに愛されてきました。効率的で安定したコードを作成するには、自分に合った C 言語コンパイラを選択することが重要です。この記事では、初心者から専門家まで選択できる 5 つの必須の C 言語コンパイラを紹介します。 GNU コンパイラ コレクションである GCCGCC は、最も一般的に使用される C 言語コンパイラの 1 つです。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 Dec 17, 2023 pm 05:13 PM

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

C++ と Python、どちらが初心者に適していますか? C++ と Python、どちらが初心者に適していますか? Mar 25, 2024 am 10:54 AM

C++ と Python、どちらが初心者に適していますか?情報技術が世界を席巻するこの時代、プログラミング能力は必須のスキルとなっています。プログラミングを学習する過程では、適切なプログラミング言語を選択することが特に重要です。数多くのプログラミング言語の中でも、C++ と Python は初心者にとって人気のある 2 つの選択肢です。では、C++ と Python のどちらが初心者に適しているのでしょうか?以下では、さまざまな側面で 2 つの長所と短所を比較し、なぜ初心者がプログラミングを始めるのに特定の言語を選択する方がより役立つのかを説明します。

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

Pandas 初心者ガイド: HTML テーブル データの読み取りのヒント Pandas 初心者ガイド: HTML テーブル データの読み取りのヒント Jan 09, 2024 am 08:10 AM

初心者ガイド: Pandas を使用して HTML 表形式データを読み取る方法 はじめに: Pandas は、データの処理と分析のための強力な Python ライブラリです。柔軟なデータ構造とデータ分析ツールを提供し、データ処理をよりシンプルかつ効率的にします。 Pandas は、CSV、Excel、その他の形式のデータを処理できるだけでなく、HTML テーブル データを直接読み取ることもできます。この記事では、Pandas ライブラリを使用して HTML テーブル データを読み取る方法を紹介し、初心者に役立つ具体的なコード例を示します。

JavaScript で HTTP ステータス コードを簡単に取得する方法 JavaScript で HTTP ステータス コードを簡単に取得する方法 Jan 05, 2024 pm 01:37 PM

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが

See all articles