ウェブフルスタック-JavaScript-ノート3

要約データ型変換JSで

JSデータ型が分かれています

[データ型]基本
数の数字
文字列
ブールブール
ヌルヌル
不定不定

【引用】データ型
ターゲットオブジェクト
通常のオブジェクトの
配列オブジェクト(アレイ)
レギュラーターゲット(正規表現)
対象日(日)
数学関数(数式)
...
関数function

実際のプロジェクトでは、需要に応じて、我々は多くの場合、データ型の間で変換する必要があります

タイプ番号のような他のデータタイプを変換します

1.发生的情况

  • ますisNaN検出時間:値が数値型の検出でない場合は、ブラウザはそれが最初にデジタルに変換され、独自のメソッドの番号に電話して、非有効な番号かどうかを検出します
isNaN('3') =>false
  Number('3')->3
  isNaN(3)->false

isNaN('3px') =>true
  Number('3px')->NaN
  isNaN(NaN)->true
  • 手動変換ベースのparseIntへ/ parseFloatは/数デジタルタイプ
  • 数学:+ - * /%が、「+」は単なる数学ではありません、それはまた、文字列の連結も可能
'3'-1 =>2
  Number('3')->3
  3-1->2

'3px'-1 =>NaN

'3px'+1 =>'3px1' 字符串拼接

var i='3';
i=i+1; =>'31'
i+=1; =>'31'
i++; =>4  i++就是单纯的数学运算,已经摒弃掉字符串拼接的规则
  • 他の値が数値型に変換され、時には比較「==」に基づいて、
  • ...

2.转换规律

//=>转换的方法:Number(浏览器自行转换都是基于这个方法完成的)

【把字符串转换为数字】
只要遇到一个非有效数字字符,结果就是NaN
'' ->0
' ' ->0 空格(Space)
'\n' ->0 换行符(Enter)
'\t' ->0 制表符(Tab)


【把布尔转换为数字】
true ->1
false ->0

【把没有转换为数字】
null ->0
undefined ->NaN

【把引用类型值转换为数字】
首先都先转换为字符串(toString),然后再转换为数字(Number)

文字列を変換するための値の他のタイプ

1.发生的情况

  • 時間の警告に基づいてコンテンツを出力する方法は、/、などのdocument.write / /プロンプトを確認し、出力値が、その後、出力文字列である変換されます
alert(1) =>'1'
  • 時間「+」文字列スプライシングに基づいて、
  • デジタル基準値の変換タイプが最初の文字列に変換され、次いで、デジタルに変換する場合
  • 文字列は、最初の文字列に変換され、その後、オブジェクトの属性として格納されていない場合、オブジェクトに属性名を設定する(オブジェクトのプロパティは、数字または文字列であることができます)
  • 呼び出しのtoString / toFixed /マニュアルは、だけでなく、文字列に変換する際に/文字列などが参加
var n=Math.PI;//=>获取圆周率:
n.toFixed(2) =>'3.14'

var ary=[12,23,34];
ary.join('+') =>'12+23+34'
  • ...

2.转换规律

//=>调用的方法:toString

【除了对象,都是你理解的转换结果】
1 ->'1'
NaN ->'NaN'
null ->'null'
[] ->''
[13] ->'13'
[12,23] ->'12,23'
...

【对象】
{name:'xxx'} ->'[object Object]'
{} ->'[object Object]'
不管是啥样的普通对象,最后结果都一样

他のブール値に変換します

1.发生的情况

  • このような変換など!/ !! /ブールの方法に基づき
  • 条件決意条件は、最終的なブールに変換され
  • ...
if(n){
  //=>把n的值转换为布尔验证条件真假
}

if('3px'+3){
  //=>先计算表达式的结果'3px3',把结果转换为布尔true,条件成立
}

2.转换的规律
のみ「0 / NaNを/ 『』 / nullを/未定義」5人の改宗偽のブール値に、残りはtrueに変換され、

特殊なケース:数学と文字列連結「+」

//=>当表达式中出现字符串,就是字符串拼接,否则就是数学运算

1+true =>2 数学运算
'1'+true =>'1true' 字符串拼接

[12]+10 =>'1210' 虽然现在没看见字符串,但是引用类型转换为数字,首先会转换为字符串,所以变为了字符串拼接
({})+10 =>"[object Object]10"
[]+10 =>"10"

{}+10 =>10 这个和以上说的没有半毛钱关系,因为它根本就不是数学运算,也不是字符串拼接,它是两部分代码
  {} 代表一个代码块(块级作用域)
  +10 才是我们的操作
  严格写法:{}; +10;

特別な場合:両側がデータの同じタイプ、同じタイプの第一変換されない場合は、比較を行う際に、「==」は、比較を

対象オブジェクト==:必ずしも同じではない、オブジェクトの動作は、参照アドレスであるため、等しくない場合、アドレスは同じではありません

{name:'xxx'}=={name:'xxx'} =>false
[]==[] =>false

var obj1={};
var obj2=obj1;
obj1==obj2 =>true

==============>その上を強調することが重要です

对象==数字:把对象转换为数字
对象==布尔:把对象转换为数字,把布尔也转换为数字
对象==字符串:把对象转换为数字,把字符串也转换为数字
字符串==数字:字符串转换为数字
字符串==布尔:都转换为数字
布尔==数字:把布尔转换为数字

==============>異なる状況の比較、他の値は、デジタルに変換され、次いで比較されます

null==undefined:true
null===undefined:false
null&&undefined和其它值都不相等

NaN==NaN:false
NaN和谁都不相等包括自己

==============>上記の特別な思い出を要求

1==true =>true
1==false =>false
2==true =>false  规律不要混淆,这里是把true变为数字1


[]==true:false  都转换为数字 0==1
![]==true:false

[]==false:true  都转换为数字 0==0
![]==false:true  先算![],把数组转换为布尔并取反=>false  =>false==false
//在JS中只有“0/NaN/空字符串""/null/undefined”这五个值转换为布尔类型的false,其余都转换为true
//所以[]转布尔是true,再!,就得到false

おすすめ

転載: www.cnblogs.com/yindanny/p/11704464.html