자 바스 크 립 트 필기시험 문제

6675 단어 자바 script
자 바스 크 립 트 필기시험 10 문제 다 할 줄 알 아 요?
1. 이 고찰
var length = 10;
function fn() {
  console.log(this.length);
}
var obj = {
  length: 5,
  method: function(fn) {
    fn();
    arguments[0]();
  }
};
obj.method(fn, 1);

출력: 102
첫 출력 10 은 문제 가 없 을 겁 니 다.우 리 는 대상 이 점 조작 자 를 제외 하고 중 괄호 를 사용 할 수 있다 는 것 을 알 고 있 기 때문에 두 번 째 실행 시 arguments 호출 방법 에 해당 합 니 다. this 는 arguments 를 가리 키 고 여기 서 두 개의 인 자 를 전 달 했 기 때문에 출력 arguments 길 이 는 2 입 니 다.
2. var 와 함수 의 사전 성명
function fn(a) {
  console.log(a);
  var a = 2;
  function a() {}
  console.log(a);
}
fn(1);

출력: function a () {} 2
우 리 는 var 와 function 이 미리 설명 할 것 이라는 것 을 알 고 있 으 며, function 은 var 성명 보다 우선 합 니 다 (동시에 존재 한다 면). 그래서 미리 설명 한 후에 출력 한 a 는 function 이 고, 그 다음 에 코드 를 아래로 실행 하여 a 를 다시 할당 합 니 다. 따라서 두 번 째 출력 은 2 입 니 다.
3. 부분 변수 와 전역 변수
var f = true;
if (f === true) {
  var a = 10;
}
function fn() {
  var b = 20;
  c = 30;
}
fn();
console.log(a);
console.log(b);
console.log(c);

출력: 10 오류 30
이것 은 제 가 오랫동안 잘못 을 저 질 렀 습 니 다. 오 랜 시간 동안 저 는 {...} 에 있 는 새로운 성명 의 변 수 는 부분 변수 라 고 생각 했 습 니 다. 나중에 저 는 function 에 있 는 새로운 성명 의 변 수 는 부분 변수 이 고 var 로 설명 하지 않 은 변 수 는 어디 에 있 든 전체 변수 라 는 것 을 알 게 되 었 습 니 다.다시 한 번 말씀 드 리 지만 function () {} 에 있 는 새로운 성명 만 국부 변수 입 니 다. while {...}, if {...}, for (..) 안에 있 는 것 은 전역 변수 입 니 다.
4. 변수 암시 적 성명
if('a' in window) {
  var a = 10;
}
alert(a)

정 답: 10
앞에서 나 는 function 과 var 가 미리 성명 할 것 이 라 고 말 했 지만, 사실은 {...} 내의 변수 도 미리 성명 할 것 이다.그래서 코드 가 실행 되 기 전에 a 변 수 는 이미 설명 되 었 습 니 다. 그래서 'a' in window 는 true 로 돌아 가 고 a 는 할당 되 었 습 니 다.
5. 기본 형식 데이터 에 속성 을 추가 하고 오 류 를 보고 하지 않 지만 값 을 추출 할 때 undefined 입 니 다.
var a = 10;
a.pro = 10;
console.log(a.pro + a);
var s = 'hello';
s.pro = 'world';
console.log(s.pro + s);

정 답: NaN undefinedhello
기본 형식 데이터 에 속성 을 추가 하 는 것 은 잘못 되 지 않 지만 인용 한 말 은 undefined 로 되 돌아 가 고 10 + undefined 는 NaN 으로 되 돌아 가 며 undefined 와 string 을 추가 할 때 문자열 로 변 경 됩 니 다.
6. 함수 성명 이 변수 성명 보다 우수 합 니 다.
console.log(typeof fn);
function fn() {};
var fn;

정 답: function
함수 성명 이 변수 성명 보다 낫 기 때문이다.코드 가 한 줄 씩 실행 되 기 전에 함수 성명 과 변수 성명 은 미리 진행 되 고 함수 성명 은 변수 성명 보다 우수 하 다 는 것 을 알 고 있 습 니 다. 여기 서 좋 은 것 은 변수 성명 보다 늦 은 것 으로 이해 할 수 있 습 니 다. 함수 이름과 변수 이름 이 같 으 면 함수 성명 은 변수 성명 을 덮어 쓸 수 있 습 니 다.따라서 상기 코드 는 함수 성명 과 변수 성명 을 순서 로 바 꾸 는 것 이 똑 같은 결과 입 니 다.
7. 한 문자열 에 가장 많이 나타 난 문 자 를 판단 하고 횟수 를 집계 합 니 다.
hash table 방식:
var s = 'aaabbbcccaaabbbaaa';
var obj = {};
var maxn = -1;
var letter;
for(var i = 0; i < s.length; i++) {
  if(obj]) {
    obj]++;
    if(obj] > maxn) {
      maxn = obj];
      letter = s[i];
    }
  } else {
    obj] = 1;
    if(obj] > maxn) {
      maxn = obj];
      letter = s[i];
    }
  }
}
alert(letter + ': ' + maxn);

정규 모드:
var s = 'aaabbbcccaaabbbaaabbbbbbbbbb';
var a = s.split('');
a.sort();
s = a.join('');
var pattern = /(\w)\1*/g;
var ans = s.match(pattern);
ans.sort(function(a, b) {
  return a.length < b.length;});;
console.log(ans[0][0] + ': ' + ans[0].length);

8. 클래식 패키지



  첫 번 째 링크 
  두 번 째 링크 
  세 번 째 링크 
  네 번 째 링크 

dom 오염 법:



  첫 번 째 링크 
  두 번 째 링크 
  세 번 째 링크 
  네 번 째 링크 
  
    var lis = document.links;
    for(var i = 0, length = lis.length; i < length; i++) {
      lis[i].index = i;
      lis[i].onclick = function() {
        alert(this.index);
      };
    }
  

닫 기:



  첫 번 째 링크 
  두 번 째 링크 
  세 번 째 링크 
  네 번 째 링크 
  
    var lis = document.links;
    for(var i = 0, length = lis.length; i < length; i++) {
      (function(i) {
        lis[i].onclick = function() {
          alert(i + 1);
        };
      })(i);
    }
  


9、this
function JSClass() {
  this.m_Text = 'division element';
  this.m_Element = document.createElement('div');
  this.m_Element.innerHTML = this.m_Text;
  this.m_Element.addEventListener('click', this.func);
  // this.m_Element.onclick = this.func;
}
JSClass.prototype.Render = function() {
  document.body.appendChild(this.m_Element);
}
JSClass.prototype.func = function() {
  alert(this.m_Text);
};
var jc = new JSClass();
jc.Render();  // add div
jc.func();  // 출력 division element
/ / click 에 추 가 된 div 요소 division element 는 underfined 를 출력 합 니 다. 왜 요?
정 답: division element undefined
첫 번 째 출력 은 이해 하기 쉽 습 니 다. 두 번 째 라면 자세히 보 세 요. this 는 사실 this. m 을 가리 키 고 있 습 니 다.Element, this. m 이 니까Element 에서 호출 한 addEventListener 함수 때문에 내부 의 this 가 모두 그것 을 가리 키 고 있 습 니 다.코드 this. m 를 한 줄 더 추가 해 볼 수 있 습 니 다.Element.m_Text = 'hello world', alert 에서 hello world 가 나 옵 니 다.
10、split
자 바스 크 립 트 함수 parseQueryString 을 작성 하 십시오. URL 파 라미 터 를 대상 으로 해석 하 는 용도 입 니 다. 예 를 들 어: var url = "http://witmax.cn/index.php?key0=0&key1=1&key2=2″
function parseQueryString(url) {
  var obj = {};
  var a = url.split('?');
  if(a.length === 1) return obj;
  var b = a[1].split('&');
  for(var i = 0, length = b.length; i 
    var c = b[i].split('=');
    obj] = c[1];
  }
  return obj;
}
var url = 'http://witmax.cn/index.php?key0=0&key1=1&key2=2';
var obj = parseQueryString(url);console.log(obj.key0, obj.key1, obj.key2);  // 0

좋은 웹페이지 즐겨찾기