[JavaScript]演算子

6499 ワード

演算子
:指定された変数/テキストに対して予め定められた任意の処理を実行するための記号
:(=)、(、)、(-)など
:演算子によって処理される変数/リットル
1.算術演算子
演算子+数値の加算-数値の減算*数値の乗算/数値の除算%数値の残余演算++前置加算++後置加算--前置減算--後置乗算
◾加算演算子(+)
console.log(10 + 1); // 결과 : 11
console.log('10' + 1); // 결과 : 101 ①
①「10」文字列であるため、「+」は接続演算子とみなされ、結果は101となる.
増分演算子(+)と減算演算子(--)
var x = 3;
var y = x++;
console.log(x); // 결과 : 4
console.log(y); // 결과 : 3 ①

var x = 3;
var y = ++x;
console.log(x); // 결과 : 4
console.log(y); // 결과 : 4 ②
①変数xを変数yに代入し、変数xを増やす(後置演算)
②変数xを増やし、結果を変数yに代入する(前置演算)
2.代入演算子
:指定した変数に値を代入する演算子("=")
 =    : 변수 등에 값을 대입한다 
 +=   : 좌변값에 우변값을 더한 값을 대입한다 
 -=   : 좌변값에 우변값을 뺀 값을 대입한다 
 *=   : 좌변값에 우변값을 곱한 값을 대입한다 
 /=   : 좌변값에 우변값을 나눈 값을 대입한다 
 %=   : 좌변값에 우변값을 나눈 나머지 값을 대입한다 
 &=   : 좌변값에 우변값을 비트 AND 연산한 값을 대입한다 
 |=   : 좌변값에 우변값을 비트 OR 연산한 값을 대입한다 
 ^=   : 좌변값에 우변값을 비트 XOR 연산한 값을 대입한다 
 <<=  : 좌변값에 우변값을 좌측 시프트한 결과를 대입한다  
>=  : 좌변값에 우변값을 우측 시프트한 결과를 대입한다 
>>= : 좌변값에 우변값을 우측 시프트한 결과를 대입한다 
◾基本型と参照型の代入差異-"="演算子
var x = 1;
var y = x;
var x = 2;
console.lo(y); // 결과 : 1 ①

var data1 = [0, 1, 2];
var data2 = data1;
data1[0] = 5;
console.log(data2); // 결과 : [5, 1, 2] ②
①変数値はコピーされており、元の変数xの値を変更してもコピー先の変数yには影響しません.(伝達値:伝達値自体)
②参照型の場合、保存値のアドレスが保存されるので、データ1の変更は日付2にも影響します.(転送参照:値を含む参照先に情報を渡す)
分割対入-配列複写
:配列を分解し、中の要素を個別変数の構文に分解します.
var data = [56, 40, 26, 82, 19, 17, 73, 99];
var x0 = data[0];
var x1 = data[1];
var x2 = data[2];

let data = [56, 40, 26, 82, 19, 17, 73, 99];
let [x0, x1, x2, ....other] = data
console.log(x0); // 결과 : 56
console.log(x1); // 결과 : 40
console.log(x2); // 결과 : 26
console.log(other); // 결과 : [82, 19, 17, 73, 99]

分割対入-オブジェクト
:オブジェクトを分解し、中のProperty値を各変数の構文に分解します.
let book = { title : 'Java포켓 레퍼런스 ', publish : '기술평론사', price : 26800, 
other: { keywd : 'Java SE 8', logo : 'logo.jpg'}};
let { title, other, other: { keywd }, memo = '없음'} = book;

console.log(title); // 결과 : Java포켓 레퍼런스
console.log(other); // 결과 : { keywd : 'Java SE 8', logo : 'logo.jpg'}
console.log(keywd); // 결과 : Java SE 8
console.log(memo); //  결과 : 없음

let book = { title : 'Java포켓 레퍼런스 ', publish : '기술평론사'};
let { title : name, publish : company } = book;

console.log(name); // 결과 : Java포켓 레퍼런스
console.log(company); // 결과 : 기술평론사
3.比較演算子
:左右のエッジの値を比較し、結果をtrue/falseに戻します.
演算子==左右のエッジの値が同じ場合(true)!=左右の値が等しくない場合(true)<左と右より小さい場合(true)<左と右の値(true)>左と右の値が大きい場合(true)>=左と右の値が等しい場合(true)=左と右の値が等しい場合(true)=左と右の値が等しい場合(true)=データ型が同じ(true)=左右のエッジの値が異なる場合、またはデータ型が異なる場合:条件式式1:式2′の条件式がtrueの場合、式1;falseの場合、式2
❗等価演算子(=)と等値演算子(==)❗
「===」演算子と「====」演算子の主な違いは、たとえば数値を数値文字と比較すると「==」が許可されますが、「====」の2つの変数のフォーマットが異なると、値だけでなく、2つの変数のタイプもチェックされるので許可されません.すなわち、「====」は「false」、「===」は「true」を返します.
console.log('3.14E2' == 314); // true
console.log('0x10' == 16); // true
console.log('1' == 1); // true

console.log('3.14E2' === 314); // false
console.log('0x10' === 16); // false
console.log('1' === 1); // false
4.論理演算子
:複素条件式を論理的に結合し、結果をtrue/falseに返します.
 && : 좌우식이 모두 true인 경우 (true) 
 || : 좌우식의 어느 쪽이든 true인 경우 (true) 
 !  : 식이 false인 경우 (true) 
var x = 1;
var y = 2;
console.log(x === 1 && y === 1); // 결과 : false
console.log(x === 1 || y === 1); // 결과 : true
無名のfalse❕
  • 空の文字列(")
  • 数字0,NaN(Not a Number)
  • null, undefined
  • たんらくひょうか
    :論理演算子は2つの式の左側から判別され、左側の結果から右側のものは判別されません.
    x = 5;
    x === 1 && console.log('...'); // false ①
    
    x = 1;
    x === 1 || console.log('...'); // true ②
    ①左側がfalse、&&演算子が右式を実行しない場合、条件式はすべてfalse
    ②左側がtrueの場合||演算子は右式を実行せず、条件式は全てtrue
    5.ビット演算子
    :整数がバイナリで表される場合、各行に対して論理計算を実行する演算.
     & : 좌변과 우변의 값 모두에 세트된 비트 (AND 연산)
     | : 좌변과 우변의 값 중 어느 쪽이든 세트된 비트 (OR 연산)
     ^ : 좌변과 우변의 값 중 어느 한쪽에는 세트되었으나 양쪽에는 세트되지 않은 비트(XOR 연산)
     ~ : 비트를 반전(NOT 연산)
     << : 비트를 좌측으로 시프트
    > : 비트를 우측으로 시프트
    >> : 비트를 우측으로 시프트 하되, 좌측을 0으로 채움
    ビット論理演算子
    :与えられた整数をバイナリ形式で表示し、各行を論理演算して元の10進数シンボルに戻します.
    10진수 2진수 10진수
    6      0110
    3     &0011                 // AND 양쪽 모두의 비트가 1 - 1
        ---------                      어느 한쪽의 비트가 0 - 0
           0010  = 2
    ❕負の数❕をバイナリで表す
    :反転ビットプラス1でその値を表す節値=2の保守表示
    10진수 2진수 10진수
    10     1010
         -------- (부정'~')         // 1010 + 1 = 1011(11)
           0101 = -11              // 0101 = -11
    シフト演算子
    :与えられた整数をバイナリ形式で表示し、各行を論理演算して元の10進数シンボルに戻します.
    10진수 2진수 10진수
    10     1010
         -------- << 1                // 좌측으로 시프트 : 우측의 행 0으로 채워짐
           10100 = 20
    6.非演算子
    演算子の概要、(カンマ)deleteオブジェクトのpropertyまたは配列内の要素削除インスタンスofオブジェクトが指定したクラスのインスタンスであるか否かを判定するnewインスタンスがtype of見積のデータ型を生成し、voidの未定義の値を取得して返す
    演算子の削除
    :見積に割り当てられた変数または配列要素、およびオブジェクトのプロパティを削除します.
    var ary = ['JavaScript', 'Ajax', 'ASP.NET']; 
    console.log(delete ary[0]); // 결과 : true 
    console.log(ary); // 결과 : [1: 'Ajax', 2: 'ASP.NET'] ①
    
    var obj = {x:1, y:2};
    console.log(delete obj.x); // 결과 : true 
    console.log(obj.x); // 결과 : undefined
    
    var obj2 = {x:obj, y:2};
    console.log(delete obj2.x); // 결과 : true 
    console.log(obj); // 결과 : {y:2} ②
    
    var data1 = 1;
    console.log(delete data1); // 결과 : false 
    console.log(data1); // 결과 : 1 ③
    
    data2 = 10;
    console.log(delete data2); // 결과 : true
    console.log(data2); // 결과 : 오류(data2는 존재하지 않음)
    ①配列要素を削除した場合は、その要素のみを削除し、前に移動しません(インデックス番号は変わりません)
    ②propertyを削除する場合は、propertyが参照するオブジェクトを削除するのではなく、property自体のみを削除します.
    ③明示的に宣言した変数は削除できません.
    文字の種類
    :見積に割り当てられた変数/文字のデータ型を返す文字列.
    var num = 1;
    console.log(typeof num); // 결과 : number
    
    var str = '안녕하세요';
    console.log(typeof str); // 결과 : string
    
    var flag = true;
    console.log(typeof flag); // 결과 : boolean
    
    var ary = ['JavaScript', 'Ajax', 'ASP.NET'];
    console.log(typeof ary); // 결과 : object
    
    var obj = {x:1, y:2};
    console.log(typeof obj); // 결과 : object