js 의 변수 와 유형
5847 단어 전단 기술 - js
1. javascript 은 몇 가지 언어 유형 을 규정 합 니 다.
7 가지 기본 데이터 형식 은 다음 과 같다.
1. String
2. Number
3. Boolean
4. Null
5. Undefine
6. NAN
7. Symbol
2. 인용 유형 은 다음 과 같 습 니 다.
1. Object
2. Function
2. Symbol 유형 이 실제 개발 에서 의 응용, 간단 한 Symbol 을 수 동 으로 실현 할 수 있 습 니 다.
먼저 말 하면
symbol
무엇 을 하 는 것 입 니까?`symbol` 。
, , `new Symbol()`。
const a = Symbol('amy'); //amy symbol ,
const b = Symbol('amy');
const c = Symbol();
const d = Symbol();
c !== d // true
a !== b // true
3. JavaScript 의 변수 가 메모리 에 있 는 구체 적 인 저장 형식
메모리
창고 메모리
대열
참조 형식 값
기본 데이터 형식 값
이벤트 시퀀스
json 과 유사 한 key, value 일치
옷 을 접다
줄 을 서다
무질서 저장, 인용 에 따라 가 져 오기
앞 선 사람 이 먼저 나 오고, 뒤 진 사람 이 먼저 나온다.
먼저 들 어가 면 먼저 나 오고, 나중에 들 어가 면 나중에 나온다.
저장 대상
실행 프로그램
-
코드 할당
시스템 자동 할당
-
메모리 크기 가 고정 되 지 않 아 동적 으로 조정 할 수 있 습 니 다.
메모리 크기 고정
-
공간 이 넓 고 운행 효율 이 상대 적 으로 낮다.
공간 이 작고 운행 효율 이 비교적 높다.
-
엄격 한 의미 에서 볼 때 변수 대상 도 메모리 에 저장 되 지만 변수 대상 의 특수 한 기능 으로 인해 우 리 는 이 해 를 할 때 이 를 메모리 에 구분 해 야 한다.
4. 기본 유형 에 대응 하 는 내 장 된 대상 과 그들 사이 의 컨테이너 해체 작업
기본 유형의 내 장 된 대상 은 다음 과 같 습 니 다.
String(),
Number(),
Boolean(),
symbol()
참조 형식의 내 장 된 대상 은 다음 과 같 습 니 다.
RegExp(),
Date(),
Array(),
Object(),
Function(),
Error()
:
변환 값 유형 = 대상 유형
:
변환 대상 유형 = 값 유형5. 이해 값 유형 과 참조 유형
원형 체인 더미, 창고 저장 방식
6. null 과 undefined 의 차이
null == undefined // true
null === undefined // false
!!null // false
!!undefined // false
Number(null) //0
Number(undefined) //NaN
null , , “ ”。
undefined , 。
null , undefined 。
typeof null // object
typeof undefined // undefined
7. 자바 스 크 립 트 데이터 형식 을 판단 하 는 세 가지 방식 과 그들의 장단 점, 배열 유형 을 어떻게 정확하게 판단 하 는 지 말 할 수 있 습 니 다.
1. typeof XXX // string boolean undefined number function object
: null, Date, arrary object.
2. XXX instanceof XXX
3. constructor // XXX.constructor === XXX(Arrary/Date/Function)
:constructor 。
4. prototype Object.prototype.toString.call(XXX) === '[object Sting/Number/Arrary/Date/Function]'
8. 암시 적 유형 전환 이 발생 할 수 있 는 장면 과 전환 원칙 은 어떻게 피하 거나 교묘 하 게 응용 해 야 합 니까?
: Number () 는 수치 형 으로 강제 전환 하고 String () 은 문자열, Boolean (), parseInt (), parseFloat () 로 강제 전환 합 니 다.
: console.log(0 && 123); // 0
console.log(123 && 0) //0
console.log(123 && 234) //234
9. 소수 정밀도 가 손실 되 는 원인 이 나타 나 면 자 바스 크 립 트 가 저장 할 수 있 는 최대 숫자, 최대 안전 숫자, 자 바스 크 립 트 가 큰 숫자 를 처리 하 는 방법, 정밀도 가 손실 되 지 않도록 하 는 방법
예제 코드:
var x = 0.3 - 0.2; //30 20
var y = 0.2 - 0.1; //20 10
x == y; // =>false,
x == 0.1; // =>false, :0.09999999999999998
y == 0.1; // =>true
Javascript , , C++/C#/Java , JavaScript , , 。
2. 발생 원인 자 바스 크 립 트 는 IEEE - 745 부동 소수점 표현법 (거의 모든 프로 그래 밍 언어 를 사용) 을 사 용 했 는데 이것 은 이 진 표현법 으로 점 수 를 정확하게 나 타 낼 수 있다. 예 를 들 어 1 / 2, 1 / 8, 1 / 1024 이다.안 타 깝 게 도 우리 가 자주 사용 하 는 점수 (특히 금융 의 계산 에 있어 서) 는 모두 10 진법 점수 1 / 10, 1 / 100 등 이다.이 진 부동 소수점 표시 법 은 0.1 과 같은 간단 한 숫자 를 정확하게 표시 하지 못 한다. 상소 코드 중의 x 와 y 의 수 치 는 최종 정확 치 에 매우 가깝다. 이런 계산 결 과 는 대부분의 계산 임 무 를 감당 할 수 있다. 이 문 제 는 두 개의 값 이 같 는 지 비교 할 때 만 나타난다.javascript 의 미래 버 전 은 이러한 반올림 문 제 를 피하 기 위해 10 진법 숫자 유형 을 지원 할 수 있 습 니 다. 그 전에 큰 정 수 를 사용 하여 중요 한 금융 계산 을 하 는 것 을 원 합 니 다. 예 를 들 어 정수 '분' 을 사용 하 는 것 이 아니 라 소수 '원' 을 사용 하여 화물 비교 단위 의 연산 을 해 야 합 니 다.
4. 솔 루 션 (인용: 솔 루 션) 은 부동 소수점 연산 의 부정 확 한 문 제 를 해결 하기 위해 연산 하기 전에 우 리 는 연산 에 참가 한 수 를 먼저 정수 (10 의 X 의 차방) 로 업그레이드 하고 연산 이 끝 난 후에 등급 을 낮 춘 다 (0.1 의 X 의 차방).
//
Number.prototype.add = function(arg){
var r1,r2,m;
try{r1=this.toString().split(".")[1].length}catch(e){r1=0}
try{r2=arg.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2))
return (this*m+arg*m)/m
}
//
Number.prototype.sub = function (arg){
return this.add(-arg);
}
//
Number.prototype.mul = function (arg)
{
var m=0,s1=this.toString(),s2=arg.toString();
try{m+=s1.split(".")[1].length}catch(e){}
try{m+=s2.split(".")[1].length}catch(e){}
return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)
}
//
Number.prototype.div = function (arg){
var t1=0,t2=0,r1,r2;
try{t1=this.toString().split(".")[1].length}catch(e){}
try{t2=arg.toString().split(".")[1].length}catch(e){}
with(Math){
r1=Number(this.toString().replace(".",""))
r2=Number(arg.toString().replace(".",""))
return (r1/r2)*pow(10,t2-t1);
}
}
질문