면접 준비 — 까다로운 문제-2

이 시리즈의 16부분과 까다로운 문제의 두 번째 부분에 오신 것을 환영합니다.
문제 109 - 다음 코드의 출력은 무엇입니까? 왜요?
(function(x) {
    return (function(y) {
        console.log(x);
    })(2)
})(1);
응답: 기록된 출력은 1입니다. 이것은 닫기 때문입니다.이곳에서 우리는 외적 생활과 내적 생활이 있다.우선 외부 생명이 실행되고 x를 1로 설정합니다.
이제 내부 iLife가 실행될 때, 패키지를 닫기 때문에,'x'의 값을 기억하고, 컨트롤러 로그는 1을 표시합니다.
문제 110 - 다음 코드의 출력은 무엇입니까? 왜요?
for (let i = 0; i < 5; i++) {
  setTimeout(function() { console.log(i); }, i * 1000 );
}
응답: 기록된 출력은 다음과 같습니다.
0
1
2
3
4
이것은 상술한 내용을 출력할 것입니다. 왜냐하면 우리는 여기에서 var이 아니라let을 사용하기 때문입니다.변수 i는 for 순환하는 블록 범위 내에서만 볼 수 있습니다.
문제 111 - 다음 코드의 출력은 무엇입니까? 왜요?
var a = [1, 2, 3];
a[10] = 99;
console.log(a[6]);
응답: 기록된 출력: 정의되지 않음
우리가 하나 주면 [10]=99;JavaScript 엔진은 배열 슬롯 3-9를 "빈 슬롯"으로 만듭니다.
따라서 a[6]는 정의되지 않은
문제 112 - 다음 코드의 출력은 무엇입니까? 왜요?
console.log(typeof undefined == typeof NULL);
응답: 기록된 출력은:true
NULL이 원래 데이터 유형인 NULL과 다르기 때문입니다.변수 NULL은 정의되지 않은 다른 변수일 뿐입니다.만약 우리 컨트롤러가 이 세 개를 기록한다면, 우리는 type of null과 type of null이 다르다는 것을 볼 수 있다.
console.log(typeof undefined); **//undefined**
console.log(typeof null);  **//object**
console.log(typeof NULL);  **//undefined**
문제 113 - 다음 코드의 출력은 무엇입니까? 왜요?
console.log(typeof typeof 1);
응답: 기록된 출력: 문자열
typeof 1은 "number"를 되돌려주고, typeof "number"는 문자열을 되돌려주기 때문입니다.
문제 114 - 다음 코드의 출력은 무엇입니까? 왜요?
var b = 1;
function outer(){
    var b = 2
    function inner(){
        b++;
        var b = 3;
        console.log(b)
    }
    inner();
}
outer();
응답: 기록된 출력: 3
예시에서 세 개의 패키지가 있는데, 모든 패키지는 자신의 varb 성명이 있다.변수를 호출할 때, 실례를 찾을 때까지 국부에서 전역까지의 순서에 따라 패키지를 검사합니다.내부 패키지 자체에 b 변수가 있기 때문에 이 변수를 출력합니다.
질문 115. - 다음 코드의 출력은 무엇입니까? 왜요?
console.log([] + []);
응답: 기록된 출력은 “ “ 즉 두 개의 공백입니다.
숫자와 문자열에 더하기 기호(+) 연산자가 적용되기 때문입니다.따라서 우리가 두 개의 빈수 그룹을 제시할 때, 그것들의 유형을 빈 문자열로 바꾸고, 그것들을 인쇄할 것이다.
문제 116-아래 코드의 출력은 무엇입니까? 왜요?
function a(greet) {
    return greet;
}

const sentence = a `hi`;

console.log(sentence);
응답: 기록된 출력은: 그룹 ["hi"]
원인은 선로 상수 문장=ahi;또한 태그 템플릿이라고 하는 함수에 매개 변수를 전달합니다.이것은 lineconst 문장=ahi와 매우 유사하다.
문제 117 - 사용자가 새 속성을 추가하거나 객체의 속성을 수정하는 것을 방지하는 방법은 무엇입니까?
답: 우리는 대상의 방법freeze () 를 사용하여 모든 사용자가 대상에 새로운 속성을 추가하거나 기존 속성을 수정하는 것을 막을 수 있습니다.다음은 용법입니다.
let profile = {
  name: "Nabendu"
};

Object.freeze(profile);

profile.age = 30;
profile.name = "Shikha";
console.log(profile); //**Object { name: "Nabendu" }**
문제 118 - 사용자가 새 속성을 추가하는 것을 어떻게 방지하지만 대상의 기존 속성을 수정할 수 있습니까?
답: 우리는 모든 사용자가 새로운 속성을 추가하는 것을 막을 수 있지만, 대상의 방법으로 seal () 을 사용하여 대상의 기존 속성을 수정할 수 있습니다.다음은 용법입니다.
let profile = {
  name: "Nabendu"
};

Object.seal(profile);

profile.age = 30;
profile.name = "Shikha";

console.log(profile); //**Object { name: "Shikha" }**
문제 119 - 다음 코드의 출력은 무엇입니까? 왜요?
let x = [1, 2, 3] + [4, 5, 6];

console.log(x);
응답 출력 1,2,34,5,6더하기 기호 (+) 연산자는 숫자와 문자열에만 작용하기 때문에 이렇게 될 것이다.따라서 위의 문제에서 먼저 그룹을 바꾸려고 시도할 것이다.숫자로 변환할 수 없기 때문에 "1,2,3"+ "4,5,6"과 같은 문자열로 변환됩니다.이 문자열 연결은 "1, 2, 3, 4, 5, 6"을 생성합니다
문제 120 - 다음 코드의 출력은 무엇입니까? 왜요?
console.log(888888888888888888);
응답 출력 8888800
JavaScript에서 16비트를 초과할 수 없기 때문입니다.이 문제는 18번, 8번이다.JavaScript에서 사용할 수 있는 최대 숫자는 number입니다.최대 안전 정수.만약 우리 컨트롤러가 그것을 기록한다면, 우리는 그것이 16자리의 숫자를 가지고 있다는 것을 발견할 것이다.
console.log(Number.MAX_SAFE_INTEGER); **//9007199254740991**
문제 121 - 스크립트 태그의 async와 defer 속성 사이에는 어떤 차이가 있습니까?
해상도가 <script> 표시에 도달했을 때, 외부 파일의 경우 해상도를 가져오지 않고 실행합니다.
이것은 아마도 문제일 것이다. 왜냐하면 이것은 통상적으로 우리의 html 코드가 DOM에 나타나고 사용자에게 보이는 것을 막기 때문이다.이 문제를 해결하는 방법 중 하나는 바디 태그가 끝나기 전에 <script> 라벨, 즉 </body>을 놓는 것이다.그러나 어떤 경우, 우리는javascript의 일부 기능이 있어야만 페이지에 사용할 수 있습니다.
우리는 여기에서 세 가지 실행 유형인 정상, 비동기, 지연을 소개할 것이다.
정상 실행
몸의 중간에 있는 어떤 위치를 예로 들다.
<html>
<head> ... </head>
<body>
    ...
    <script src="script.js">
    ....
</body>
</html>
앞에서 설명한 바와 같이, HTML 해석은 스크립트를 가져오고 실행하기 위해 중지됩니다.
정상 실행
비동기식 실행
스크립트 태그의 async 속성은 브라우저에 스크립트 파일을 비동기적으로 실행할 수 있음을 표시합니다.
<html>
<head> ... </head>
<body>
    ...
    <script async src="script.js">
    ....
</body>
</html>
스크립트는 HTML 해석과 함께 가져옵니다.그러나 스크립트를 가져오면 HTML 해석이 중단되어 스크립트를 실행합니다.
비동기식 실행
집행을 미루다
스크립트 태그의 defer 속성은 브라우저에 HTML 해석이 끝난 후에만 스크립트 파일을 실행하도록 지시합니다.
<html>
<head> ... </head>
<body>
    ...
    <script defer src="script.js">
    ....
</body>
</html>
비동기식과 마찬가지로 스크립트는 HTML 해석과 병행하여 얻을 수 있습니다.그러나 HTML 해석이 완료되기 전에 스크립트를 추출하더라도 스크립트를 실행하기 전에 해석이 완료되기를 기다립니다.
실행 지연
문제 122 - 다음 코드의 출력은 무엇입니까? 왜요?
 console.log(false == ‘0’)
 console.log(false === ‘0’)
응답: 기록된 출력은 다음과 같습니다.
 true
 false
JavaScript에서 = = 를 비교하기 전에 유형 변환을 수행하지만 = = = 는 유형 변환을 수행하지 않습니다.설명은 다음과 같습니다.
예1: 우리가 알고 있는 바와 같이 JavaScript에는 truthy와falsy 값이 있습니다.자세한 내용은 here 참조.따라서 "0"은 실제 값입니다.그러나 false== "0"을 현시적으로 실행할 때 양쪽 모두 숫자로 변환한 다음 비교를 실행합니다.따라서 0==0이 되고 결과는true가 됩니다.
앞에서 말한 바와 같이 === 형식 변환을 하지 않기 때문에false를 초래할 수 있습니다.
문제 1, 2, 3 - 다음 코드의 출력은 무엇입니까? 왜요?
var x = 21;
var girl = function () {
    console.log(x);
    var x = 20;
};
girl ();
응답: 기록된 출력은 다음과 같습니다.
undefined
JavaScript에 컴파일러와 해석기 절차가 있기 때문입니다.따라서 컴파일러가 실행될 때,girl의 역할 영역에'x'를 등록합니다.
통역사가 컨트롤러에 왔을 때log(x), 위의 해석기 단계에서 알 수 있듯이 "x"는 girl의 범위 내에 있습니다.그러나 아무런 가치도 없기 때문에 정의되지 않은 것은 인쇄된 것이다.
너는 나의 이전 블로그를 훑어보고 컴파일러와 해석기 절차가 어떻게 작동하는지 이해할 수 있다.
문제 124 - 다음 코드의 출력은 무엇입니까? 왜요?
console.log(1 < 2 < 3);

console.log(3 > 2 > 1);
응답: 기록된 출력은 다음과 같습니다.
true
false
설명은 다음과 같습니다.
예 1: JavaScript 엔진을 왼쪽에서 오른쪽으로 비교합니다.따라서 1<2는 진실이 될 것이다.그리고 이 문장은 진<3로 변한다.지금 비교해 보면true는 1로 변하고 1<3은true로 변한다
예2: 3>2를 비교하면 결론을 얻는다.그리고 이 문장은true>1이 됩니다.지금 비교해 보면true는 1로 변하고 1>1은false를 준다
문제 125 - 다음 코드의 출력은 무엇입니까? 왜요?
 let a = () => arguments;
 console.log(a(‘hi’));
그것을 이해하기 위해서 화살표 함수를 정규 함수로 바꾸겠습니다.normal 함수는arguments 대상에 접근할 수 있습니다. 이 대상은 유사한 그룹의 대상이며 전달된 매개 변수를 되돌려줍니다.
정규 함수의 매개 변수
이제 화살표 함수로 돌아갑니다.arrow 함수는argument 대상에 접근할 권리가 없습니다.따라서 화살표 함수 코드를 실행하면 인용 오류가 발생합니다.
/*
 Exception: ReferenceError: arguments is not defined
 a@Scratchpad/1:1:15
 [@Scratchpad](http://twitter.com/Scratchpad)/1:2:13
 */
문제 126 - 다음 코드의 출력은 무엇입니까? 왜요?
const x = [1, 2, 3];

x[-1] = -1;

console.log(x[x.indexOf(999)]);
응답: 기록된 출력: -1
왜냐하면 우리는 이미 x[-1]을 -1이라고 성명했기 때문이다.그룹 함수 indexOf는 그룹의 요소를 찾는 데 사용됩니다.요소를 찾지 못하면 -1로 돌아갑니다.현재 x.index Of(999)는 - 1을 얻을 수 있습니다. 왜냐하면 그룹에 999와 같은 항목이 없기 때문입니다.
따라서 우리는 x[-1], 즉 -1을 효과적으로 기록했다.
이 시리즈의 16번째 부분과 까다로운 문제의 마지막 부분은 여기서 끝냅니다.

좋은 웹페이지 즐겨찾기