자 바스 크 립 트 필기시험 문제
6675 단어 자바 script
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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Thymeleaf 의 일반 양식 제출 과 AJAX 제출텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.