ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript のデータ型と変数とは何ですか?それらの間で変換するにはどうすればよいですか?

JavaScript のデータ型と変数とは何ですか?それらの間で変換するにはどうすればよいですか?

伊谢尔伦
リリース: 2017-07-29 15:11:32
オリジナル
1404 人が閲覧しました

データ型

次のデータ型は JavaScript で定義されています:

Number

JavaScript は整数と浮動小数点数を区別せず、Number で表されます。以下は有効な Number 型です。


123; // 整数123
0.456; // 浮点数0.456
1.2345e3; // 科学计数法表示1.2345x1000,等同于1234.5
-99; // 负数
NaN; // NaN表示Not a Number,当无法计算结果时用NaN表示
ログイン後にコピー

Infinity; // Infinity は、JavaScript の Number が表現できる最大値を超える場合、Infinity で表現されるため、16 進数で表現する方が便利です。 16 進数は、0x 接頭辞と 0 ~ 9、a ~ f で表されます (例: 0xff00、0xa5b4c3d2 など)。これらは 10 進数で表現された値とまったく同じです。

Number は四則演算を直接実行でき、ルールは数学と一致しています:


1 + 2; // 3
(1 + 2) * 5 / 2; // 7.5
2 / 0; // Infinity
0 / 0; // NaN
10 % 3; // 1
10.5 % 3; // 1.5
ログイン後にコピー

% は剰余演算であることに注意してください。


文字列


文字列とは、'abc'、'xyz' などの一重引用符 ' または二重引用符 " で囲まれたテキストです。 '' または "" 自体は単なる表現であることに注意してください。は文字列の一部ではありません。したがって、文字列 'abc' には a、b、c の 3 つの文字しかありません。

ブール値の表現はブール代数 A の表現とまったく同じです。ブール値は 3 文字のみです。 true と false の 2 つの値は、true または false を使用してブール値を表すことも、ブール演算を通じて計算することもできます。 && 演算は AND 演算であり、すべてが true のみです。&& 演算の結果は true です:


true; // 这是一个true值
false; // 这是一个false值
2 > 1; // 这是一个true值
2 >= 3; // 这是一个false值
ログイン後にコピー

|| 演算は、そのうちの 1 つが true である限り、OR 演算です。 || 演算は true:


true && true; // 这个&&语句计算结果为true
true && false; // 这个&&语句计算结果为false
false && true && false; // 这个&&语句计算结果为false
ログイン後にコピー

! 演算は非演算です。true を false に、false を true に変える単項演算子です:


false || false; // 这个||语句计算结果为false
true || false; // 这个||语句计算结果为true
false || true || false; // 这个||语句计算结果为true
ログイン後にコピー

ブール値は次のとおりです。次のような条件判断でよく使用されます:


! true; // 结果为false
! false; // 结果为true
! (2 > 5); // 结果为true
ログイン後にコピー


比較演算子


数値を比較するとき、比較演算子を通してブール値を取得できます:



var age = 15;
if (age >= 18) {
 alert('adult');
} else {
 alert('teenager');
}
ログイン後にコピー

実際、JavaScriptあらゆるデータ型の比較が可能です:


2 > 5; // false
5 >= 2; // true
7 == 7; // true
ログイン後にコピー

等価演算には特に注意してください JavaScript の設計時には、2 つの比較演算子があります:

1 つ目は == 比較で、データ型を自動的に変換します多くの場合、非常に奇妙な結果が得られます。2 番目の比較は === 比較であり、データ型が矛盾している場合は自動的に変換されません。一貫性がある場合は、再度比較します。
JavaScript の設計上の欠陥のため、== 比較を使用せず、常に === 比較を使用してください。

別の例外は、特殊な Number NaN が他のすべての値と等しくないことです。それ自体を含む:



false == 0; // true
false === 0; // false
ログイン後にコピー

NaN を決定する唯一の方法は isNaN() 関数を使用することです:



NaN === NaN; // false
ログイン後にコピー

最後に、浮動小数点数の等価比較に注意してください:


isNaN(NaN); // true
ログイン後にコピー

これは JavaScript の設計上の欠陥ではありません。コンピュータは無限ループの小数を正確に表現できないため、浮動小数点数は 2 つの浮動小数点数が等しいかどうかを比較するために、その差の絶対値を計算することしかできません。特定のしきい値未満の場合:



1 / 3 === (1 - 2 / 3); // false
ログイン後にコピー


null と undefined


null は「空」の値を表し、0 や空の文字列'' とは異なります。0 は数値です。 '' は長さ 0 の文字列を表し、null は「空」を表します。

他の言語でも、Java の null、Swift の nil、Python Express の None など、JavaScript と同様の null の表現があります。ただし、JavaScript には、「未定義」を意味する null に似た undefine もあります。

JavaScript の設計者は、空の値を表すために null を使用し、未定義の値を表すために unknown を使用することを望んでいます。これが役に立たないことは事実が証明しており、この 2 つの違いはほとんど重要ではありません。ほとんどの場合、null を使用する必要があります。 unknown は、関数パラメータが渡されるかどうかを決定する場合にのみ役立ちます。
配列

配列とはコレクションを順番に並べたもので、コレクションの各値を要素と呼びます。 JavaScript 配列には任意のデータ型を含めることができます。例:


Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true
ログイン後にコピー
上記の配列には 6 つの要素が含まれています。配列は [] で表され、要素は , で区切られます。
配列を作成する別の方法は、Array() 関数を使用することです:



[1, 2, 3.14, &#39;Hello&#39;, null, true];
ログイン後にコピー

ただし、コードを読みやすくするために、 [] を直接使用することを強くお勧めします。
配列の要素にはインデックスによってアクセスできます。インデックスの開始値は 0 であることに注意してください:


new Array(1, 2, 3); // 创建了数组[1, 2, 3]
ログイン後にコピー


Object


JavaScript オブジェクトは、順序付けされていないキーと値のコレクションです。例:



var person = {
 name: &#39;Bob&#39;,
 age: 20,
 tags: [&#39;js&#39;, &#39;web&#39;, &#39;mobile&#39;],
 city: &#39;Beijing&#39;,
 hasCar: true,
 zipcode: null
};
ログイン後にコピー

JavaScript对象的键都是字符串类型,值可以是任意数据类型。上述person对象一共定义了6个键值对,其中每个键又称为对象的属性,例如,person的name属性为'Bob',zipcode属性为null。
要获取一个对象的属性,我们用对象变量.属性名的方式:


person.name; // &#39;Bob&#39;
person.zipcode; // null
ログイン後にコピー

变量

变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。
变量在JavaScript中就是用一个变量名表示,变量名是大小写英文、数字、$和_的组合,且不能用数字开头。变量名也不能是JavaScript的关键字,如if、while等。申明一个变量用var语句,比如:


var a; // 申明了变量a,此时a的值为undefined
var $b = 1; // 申明了变量$b,同时给$b赋值,此时$b的值为1
var s_007 = &#39;007&#39;; // s_007是一个字符串
var Answer = true; // Answer是一个布尔值true
var t = null; // t的值是null
ログイン後にコピー

变量名也可以用中文,但是,请不要给自己找麻烦。
在JavaScript中,使用等号=对变量进行赋值。可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,但是要注意只能用var申明一次,例如:


var a = 123; // a的值是整数123
a = &#39;ABC&#39;; // a变为字符串
ログイン後にコピー

这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言,赋值语句如下:


int a = 123; // a是整数类型变量,类型用int申明
a = "ABC"; // 错误:不能把字符串赋给整型变量
ログイン後にコピー

和静态语言相比,动态语言更灵活,就是这个原因。
请不要把赋值语句的等号等同于数学的等号。比如下面的代码:


var x = 10;
x = x + 2;
ログイン後にコピー

如果从数学上理解x = x + 2那无论如何是不成立的,在程序中,赋值语句先计算右侧的表达式x + 2,得到结果12,再赋给变量x。由于x之前的值是10,重新赋值后,x的值变成12。

strict模式

JavaScript在设计之初,为了方便初学者学习,并不强制要求用var申明变量。这个设计错误带来了严重的后果:如果一个变量没有通过var申明就被使用,那么该变量就自动被申明为全局变量:


i = 10; // i现在是全局变量
ログイン後にコピー

在同一个页面的不同的JavaScript文件中,如果都不用var申明,恰好都使用了变量i,将造成变量i互相影响,产生难以调试的错误结果。

使用var申明的变量则不是全局变量,它的范围被限制在该变量被申明的函数体内(函数的概念将稍后讲解),同名变量在不同的函数体内互不冲突。

为了修补JavaScript这一严重设计缺陷,ECMA在后续规范中推出了strict模式,在strict模式下运行的JavaScript代码,强制通过var申明变量,未使用var申明变量就使用的,将导致运行错误。

启用strict模式的方法是在JavaScript代码的第一行写上:


&#39;use strict&#39;;
ログイン後にコピー

这是一个字符串,不支持strict模式的浏览器会把它当做一个字符串语句执行,支持strict模式的浏览器将开启strict模式运行JavaScript。

来测试一下你窗体顶端


&#39;use strict&#39;;
// 如果浏览器支持strict模式,
// 下面的代码将报ReferenceError错误:
ログイン後にコピー

数据类型如何转换:

1. 数値 xxx*1.0 に変換します。
文字列 xxx+"" に変換します。
2. 1 つの値から別の種類の値を抽出し、変換作業を完了します。
.文字列から整数を抽出します: parseInt();
例: parseInt("123zhang") の結果は 123 です。
.文字列から浮動小数点数を抽出します: parseFloat();
例: parseFloat("0.55zhang) ") 結果は 0.55 です
。文字列で表される JavaScript コードを実行します: eval();
例: zhang=eval("1+1") の結果は zhang=2 になります
。文字列に変換します: toString( );
例: zhang=eval("1+1") は zhang=2 になります
3. 値全体が 1 つの型から別のデータ型に変換されます (基本的なデータ型変換と呼ばれます)。
基本的なデータ型変換 3 つの方法:
. 文字型に変換: String(); 例: String(678) の結果は "678" です。 数値型に変換: Number("678") は
です。 . Boolean 型に変換: Boolean(); 例: Boolean("aaa") の結果は true です

これらのメソッドを使用する場合は、必要に応じてパラメータやメソッドの実行時に例外を判断して処理するようにしてください。
参考資料にあるように、実行効率をまとめると以下のとおりです:
IEでは、1つ目のタイプが最も速く、2つ目は2番目、3つ目は最も悪いですが、その差はわずか10万倍ですが、その差は数十倍、わずか数百ミリ秒です。
FF では、1 番目と 2 番目のタイプは基本的に同等で、3 番目のタイプが最も遅くなります。
速度の差は基本的に無視できます。なぜなら、その差は非常に小さいからです。
ただし、コードの単純さから、最初のメソッドは明らかに書きやすく、読みやすいです。
、オブジェクトには toString メソッドがないため、エラーを報告する 2 番目のメソッドには問題はありません。それに、彼はいつも最速だった。
そのため、私は最初の方法を使用してデータ型変換を完了することに慣れています
ただし、たとえば、「123456abcd」内の数値を抽出する必要がある場合、当然、parsetInt や parseFloat などの関数を使用する必要があります。
ただし、変換結果がNaN等になる場合もあるので判断が必要になることに注意してください。

以上がJavaScript のデータ型と変数とは何ですか?それらの間で変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート