>  기사  >  웹 프론트엔드  >  인터뷰 개발을 위한 일반적인 JavaScript 지식 요약

인터뷰 개발을 위한 일반적인 JavaScript 지식 요약

黄舟
黄舟원래의
2017-02-23 13:17:501144검색


No1. 구문 및 유형

1. 선언 및 정의

변수 유형: var, 정의, 블록 범위(scope) 지역 변수를 정의하고, 읽기 전용 상수를 정의합니다.

변수 형식: 문자로 시작하고 밑줄 "_" 또는 $ 기호, 대소문자를 구분합니다.

변수 할당: 선언은 했지만 할당되지 않은 변수는 사용 시 정의되지 않은 값을 갖습니다. 선언되지 않은 변수를 직접 사용하면 예외가 발생합니다.

계산에 할당되지 않은 변수: 결과는 NaN입니다. 예:

var x, y = 1;
console.log(x + y); //结果为NaN,因为x没有赋值。

 2. Scope

  변수 범위: ES6 이전에는 블록 선언 범위가 없었고 변수는 함수 블록 내에서 또는 전역적으로 작동했습니다. 다음 코드에서 볼 수 있듯이 입력된 x는 5입니다.

if (true) {
var x = 5;
}
console.log(x); // 5

 ES6 변수 범위: ES6은 블록 범위를 지원하지만 변수를 선언하려면 let을 사용해야 합니다. 다음 코드 출력에서는 예외가 발생합니다.

f (true) {
let y = 5;
}
console.log(y); // ReferenceError: y is not defined1234

변수 부동: 메소드나 전역 코드에서 변수가 선언되기 전에 변수를 사용하면 예외가 발생하지 않지만 정의되지 않은 값이 반환됩니다. 이는 JavaScript가 변수 선언을 함수 또는 전역 앞에 자동으로 띄우기 때문입니다. 예를 들어 다음 코드는

/**
* 全局变量上浮
*/
console.log(x === undefined); // logs "true"
var x = 3;

/**
* 方法变量上浮
*/
var myvar = "my value";
// 打印变量myvar结果为:undefined
(function() {
console.log(myvar); // undefined
var myvar = "local value";
})();

위 코드와 다음 코드는 동일합니다.

/**
* 全局变量上浮
*/
var x;
console.log(x === undefined); // logs "true"
x = 3;

/**
* 方法变量上浮
*/
var myvar = "my value";
(function() {
var myvar;
console.log(myvar); // undefined
myvar = "local value";
})();

전역 변수: 페이지에서 전역 개체는 window이므로 전역 변수에 액세스할 수 있습니다. 창을 통해. 예:

version = "1.0.0";
console.log(window.version); //输出1.0.0

No2. 데이터 구조 및 유형

1. 데이터 유형

6가지 기본 유형: 부울(true 또는 false), null (js는 대소문자를 구분하며 Null 및 NULL과 다릅니다.), 정의되지 않음, 숫자, 문자열, 기호(고유하고 불변으로 표시됨)

객체 유형: 객체.

객체와 함수: 객체는 값의 컨테이너 역할을 하고, 함수는 응용 프로시저 역할을 합니다.

 2. 데이터 변환

  기능: 문자열을 숫자로 변환하는 데는parseInt 및 parseFloat 메소드를 사용할 수 있습니다.

parseInt: 함수 시그니처는parseInt(string, radix), radix는 10진수나 16진수 등 디지털 진수를 나타내는 2~36 사이의 숫자입니다. 반환 결과는 정수 또는 NaN입니다. 예를 들어 아래 출력 결과는 모두 15입니다.

parseInt("0xF", 16);
parseInt("F", 16);
parseInt("17", 8);
parseInt(021, 8);
parseInt("015", 10);
parseInt(15.99, 10);
arseInt("15,123", 10);
parseInt("FXX123", 16);
parseInt("1111", 2);
parseInt("15*3", 10);
parseInt("15e2", 10);
parseInt("15px", 10);

 parseFloat: 함수 서명은parseFloat(string)이고 반환 결과는 숫자 또는 NaN입니다. 예:

parseFloat("3.14"); //返回数字
parseFloat("314e-2"); //返回数字
parseFloat("more non-digit characters"); //返回NaN

 3. 데이터 유형 텍스트화

텍스트화 유형: 배열, 부울, 부동 소수점, 정수, 객체, RegExp, 문자열.

배열의 추가 쉼표: ["Lion", , "Angel"], 길이는 3이고 [1]의 값은 undefiend입니다. ['home', , 'school', ], 마지막 쉼표는 생략되어 길이는 3입니다. [ , '집', , '학교'], 길이는 4입니다. ['집', , '학교', , ], 길이는 4입니다.

정수 정수: 정수는 10진수, 8진수, 16진수, 2진수로 표현할 수 있습니다. 예:

0, 117 and -345 //十进制
015, 0001 and -0o77 //八进制
0x1123, 0x00111 and -0xF1A7 //十六进制
0b11, 0b0011 and -0b11 1234 //二进制

부동 소수점 수: [(+|-)][digits][.digits][(E|e)[(+|-)]digits]. 예:

3.1415926,-.123456789,-3.1E+12(3100000000000),.1e-23(1e-24)

객체: 객체의 속성 획득 값은 ".property" 또는 "[속성 이름]"을 통해 얻을 수 있습니다. 예:

var car = { manyCars: {a: "Saab", "b": "Jeep"}, 7: "Mazda" };
console.log(car.manyCars.b); // Jeep
console.log(car[7]); // Mazda

객체 속성: 속성 이름은 임의의 문자열이거나 빈 문자열일 수 있습니다. 잘못된 이름은 따옴표로 묶을 수 있습니다. 복합명은 .을 통해서는 얻을 수 없고, []를 통해서는 얻을 수 있다. 예:

var unusualPropertyNames = {
"": "An empty string",
"!": "Bang!"
}
console.log(unusualPropertyNames.""); // SyntaxError: Unexpected string
console.log(unusualPropertyNames[""]); // An empty string
console.log(unusualPropertyNames.!); // SyntaxError: Unexpected token !
console.log(unusualPropertyNames["!"]); // Bang!

이스케이프 문자: 다음 문자열 출력에는 이스케이프 기호 """가 사용되기 때문에 큰따옴표가 포함되어 있습니다.

var quote = "He read \"The Cremation of Sam McGee\" by R.W. Service.";
console.log(quote);
//输出:He read "The Cremation of Sam McGee" by R.W. Service.1。

문자열 개행 방법: 문자열에 직접 ""를 추가합니다. 다음 코드와 같이 줄 끝:

var str = "this string \
is broken \
across multiple\
lines."
console.log(str); // this string is broken across multiplelines.

No3. 제어 흐름 및 오류 처리

1. 블록 표현

기능: if, for, while과 같은 블록 표현식은 일반적으로 사용됩니다. 다음 코드에서 {x++;}는 블록 선언입니다.

while (x < 10) {
x++;
}

ES6 이전에는 블록 범위가 없었습니다. 에 정의된 변수는 실제로 메소드나 전역에 포함되어 있으며, 변수의 영향력이 블록의 범위를 초과합니다. 예를 들어 다음 코드의 최종 실행 결과는 2입니다. > ES6 이후에는 블록 범위가 있습니다. ES6에서는 블록 범위 선언 var를 let으로 변경할 수 있으므로 변수는 블록 범위만 범위 지정합니다.

2. 논리적 판단

false로 판단되는 특수값: false, undefine, null, 0, NaN, "" 단순 부울 및 객체 부울 유형: 단순 부울 유형의 false 및 true 및 false 및 객체 부울 다음 예와 같이 true와 같지 않음의 차이가 있습니다.

var x = 1;
{
var x = 2;
}
console.log(x); // outputs 2

No4. 예외 처리

1. >

예외 발생 구문: 예외 발생 유형은 아래와 같습니다. 사용자 정의 예외:

var b = new Boolean(false);
if (b) // 返回true
if (b == true) // 返回false

 

2. 구문

사용 }catch(e){}finally{} 구문은 C# 구문과 유사합니다.

finally 반환 값: finally 반환 문을 추가하면 전체 try.catch에 관계없이 반환 값이 반환됩니다. 다음과 같이 모두 최종적으로 반품되었습니다.

function f() {
    try {
        console.log(0);
        throw "bogus";
    } catch(e) {
        console.log(1);
        return true; // 返回语句被暂停,直到finally执行完成
        console.log(2); // 不会执行的代码
    } finally {
        console.log(3);
        return false; //覆盖try.catch的返回
        console.log(4); //不会执行的代码
    }
    // "return false" is executed now 
    console.log(5); // not reachable
}
f(); // 输出 0, 1, 3; 返回 false

  finally吞并异常:如果finally有return并且catch中有throw异常。throw的异常不会被捕获,因为已经被finally的return覆盖了。如下代码所示:

function f() {
    try {
        throw "bogus";
    } catch(e) {
        console.log(&#39;caught inner "bogus"&#39;);
        throw e; // throw语句被暂停,直到finally执行完成
    } finally {
        return false; // 覆盖try.catch中的throw语句
    }
    // 已经执行了"return false"
}

try {
    f();
} catch(e) {
    //这里不会被执行,因为catch中的throw已经被finally中的return语句覆盖了
    console.log(&#39;caught outer "bogus"&#39;);
}
// 输出
// caught inner "bogus"

  系统Error对象:我们可以直接使用Error{name, message}对象,例如:throw (new Error('The message'));

 以上就是面试开发常用的 JavaScript 知识点总结的内容,更多相关内容请关注PHP中文网(www.php.cn)! 


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.