javascript面试题总结(一)

javascript 的typeof 返回哪些数据类型

undefined, string,boolean, number, symbol(ES6),object ,function

事件绑定和普通事件有什么区别

事件绑定是指把事件注册到具体的元素之上,普通事件指的是可以用来注册的事件

如何显示/隐藏一个dom 元素?请用原生的JavaScript 方法实现

jQuery 框架中$.ajax()的常用参数有哪些?写一个post 请求并带有发送数据和返回数据的样例

如现在有一个效果,有显示用户头像、用户昵称、用户其他信息;当用户鼠标移到头像上时,会弹出用户的所有信息;如果是你,你会如何实现这个功能,请用代码实现?

用正则表达式,写出由字母开头,其余由数字、字母、下划线组成的6~30的字符串?

写一个函数可以计算sum(5,0,-5);输出0; sum(1,2,3,4);输出10;

《正则》写出正确的正则表达式匹配固话号,区号3-4 位,第一位为0,中横线,7-8 位数字,中横线,3-4 位分机号格式的固话号

《算法》一下A,B 可任选一题作答,两题全答加分

A:农场买了一只羊,第一年是小羊,第二年底生一只,第三年不生,第四年底再生一只,第
五年死掉。
B:写出代码对下列数组去重并从大到小排列{5,2,3,6,8,6,5,4,7,1,9}

请写出一张图片的HTML 代码,已知道图片地址为“images/abc.jpg”,宽100px,高50px

请写一个正则表达式:要求最短6 位数,最长20 位,阿拉伯数和英文字母(不区分大小写)组成

^(?=.\d)(?=.[a-z])(?=.*[A-Z])[a-zA-Z\d]{6,20}$

统计1 到400 亿之间的自然数中含有多少个1?比如1-21 中,有1、10、11、21 这四个自然数有5 个1223、删除与某个字符相邻且相同的字符,比如fdaffdaaklfjklja 字符串处理之后成为“fdafdaklfjklja”

列出3 条以上ff 和IE 的脚本兼容问题

1、在IE 下可通过document.frames[“id”];得到该IFRAME 对象,
而在火狐下则是通过document.getElementById(“content_panel_if”).contentWindow;
2、IE 的写法: _tbody=_table.childNodes[0]
在FF 中,firefox 会在子节点中包含空白则第一个子节点为空白”“, 而ie 不会返回空白
可以通过if(“” != node.nodeName)过滤掉空白子对象
3、模拟点击事件
if(document.all){ //ie 下
document.getElementById(“a3”).click();
}
else{ //非IE
var evt = document.createEvent(“MouseEvents”);
evt.initEvent(“click”, true, true);
document.getElementById(“a3”).dispatchEvent(evt);
}
4、事件注册
if (isIE){window.attachEvent(“onload”, init);}else{window.addEventListener(“load”, init, false);}

下列JavaScript 代码执行后,iNum 的值是

var iNum = 0;
for(var i = 1; i< 10; i++){
if(i % 5 == 0){
continue;
}
iNum++;
}

232、输出结果是多少?

1)

var a;
var b = a * 0;
if (b == b) {
console.log(b * 2 + “2” - 0 + 4);
} else {
console.log(!b * 2 + “2” - 0 + 4);
}
答案:26
2)
var a = 1;

var a; var b = a * 0; if (b == b) { console.log(b * 2 + "2" - 0 + 4); } else { console.log(!b * 2 + "2" - 0 + 4); }

答案:6
3) var t = 10;
function test(t){
var t = t++;
}test(t);
console.log(t);
答案:10
4) var t = 10;
function test(test){
var t = test++;
}test(t);
console.log(t);
答案:10
6) var t = 10;
function test(test){
t = test++;
}test(t);
console.log(t);
答案:10
7) var t = 10;
function test(test){
t = t + test;
console.log(t);
var t = 3;
北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090
}test(t);
console.log(t);
答案:NaN 10
8)var a;
var b = a / 0;
if (b == b) {
console.log(b * 2 + “2” - 0 + 4);
} else {
console.log(!b * 2 + “2” - 0 + 4);
}
答案:26
9)
var a = 1;

var a; var b = a / 0; if (b == b) { console.log(b * 2 + "2" + 4); } else { console.log(!b * 2 + "2" + 4); }

答案:Infinity24

下列JavaScript 代码执行后,运行的结果是

点击我
var btn = document.getElementById(‘btn’);
var handler = {
id: ‘_eventHandler’,
exec: function(){
alert(this.id);
}
}
btn.addEventListener(‘click’, handler.exec.false);

下列JavaScript 代码执行后,依次alert 的结果是


var obj = {proto: {a:1,b:2}};
function F(){};
F.prototype = obj.proto;
var f = new F();
obj.proto.c = 3;
obj.proto = {a:-1, b:-2};
alert(f.a);
alert(f.c);
delete F.prototype['a'];
alert(f.a);
alert(obj.proto.a);

下列JavaScript 代码执行后的效果是

<ul id='list'>
<li>item</li>
<li>item</li>
<li>item</li>
<li>item</li>
<li>item</li>
</ul>
var items = document.querySelectorAll('#list>li');
for(var i = 0;i < items.length; i++){
setTimeout(function(){
items[i].style.backgroundColor = '#fee';
}, 5);
}

下列JavaScript 代码执行后的li 元素的数量是

<ul>
<li>Item</li>
<li></li>
<li></li>
<li>Item</li>
<li>Item</li>
</ul>
var items = document.getElementsByTagName('li');
for(var i = 0; i< items.length; i++){
if(items[i].innerHTML == ''){
items[i].parentNode.removeChild(items[i]);
}
}

正则表达式构造函数var reg=new RegExp(“xxx”)与正则表达字面量varreg=//有什么不同?匹配邮箱的正则表达式?

答案:当使用RegExp()构造函数的时候,不仅需要转义引号(即\”表示”),并且还需要
双反斜杠(即\表示一个\)。使用正则表达字面量的效率更高。?

用js 实现随机选取10–100 之间的10 个数字,存入一个数组,并排序。

var iArray = [];
funtion getRandom(istart, iend){
var iChoice = istart - iend +1;
return Math.floor(Math.random() * iChoice + istart;
}
for(var i=0; i<10; i++){
iArray.push(getRandom(10,100));
}
iArray.sort();

写出答案

var a=1;
console.log(a++); //答案:1
console.log(++a); //答案:3
console.log(null==undefined); //答案:true
console.log(“1”==1); //答案:true,因为会将数字1 先转换为字符串1
console.log(“1”===1); //答案:false,因为数据类型不一致
typeof 1; “number”
typeof “hello”; “string”
typeof /[0-9]/; “object”
typeof {}; “object”
typeof null; “object”
typeof undefined; “undefined”
typeof [1,2,3]; “object”
typeof function(){}; //”function”
parseInt(3.14); //3
parseFloat(“3asdf”); //3
parseInt(“1.23abc456”);
parseInt(true);//”true” NaN

第10 题:

//考点:函数声明提前
function bar() {
return foo;
foo = 10;
function foo() {}
//var foo = 11;
}
alert(typeof bar());//”function”

第11 题

var foo = 1;
function bar() {
foo = 10;
return;
function foo() {}
}
bar();
alert(foo);//答案:1
263、第12 题:
console.log(a);//是一个函数
var a = 3;
function a(){}
console.log(a);////3

bar();//报错
var foo = function bar(name) {
console.log(“hello”+name);
console.log(bar);
};
//alert(typeof bar);
foo(“world”);//”hello”
console.log(bar);//undefined
console.log(foo.toString());
bar();//报错

var regMail =/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/;

正则表达式对象3 – 清除空格

写一个function,清除字符串前后的空格。(兼容所有浏览器)
使用自带接口trim(),考虑兼容性:
if (!String.prototype.trim) {
String.prototype.trim = function() {
return this.replace(/^\s+/, “”).replace(/\s+$/,”“);
} }
// test the function
var str = ” \t\n test string “.trim();
alert(str == “test string”); // alerts “true”

238、程序中捕获异常的方法?

window.error
try{}catch(){}finally{}

请写出一个程序,在页面加载完成后动态创建一个form 表单,并在里面

添加一个input 对象并给它任意赋值后义post 方式提交到:
http://127.0.0.1/save.php

用JavaScript 实现冒泡排序。数据为23、45、18、37、92、13、24

作用域-编译期执行期以及全局局部作用域问题

理解js 执行主要的两个阶段:预解析和执行期

JavaScript 数组元素添加、删除、排序等方法有哪些?

Array.concat( ) 连接数组
Array.join( ) 将数组元素连接起来以构建一个字符串
Array.length 数组的大小
Array.pop( ) 删除并返回数组的最后一个元素
Array.push( ) 给数组添加元素
Array.reverse( ) 颠倒数组中元素的顺序
Array.shift( ) 将元素移出数组
Array.slice( ) 返回数组的一部分
Array.sort( ) 对数组元素进行排序
Array.splice( ) 插入、删除或替换数组的元素
Array.toLocaleString( ) 把数组转换成局部字符串
Array.toString( ) 将数组转换成一个字符串
Array.unshift( ) 在数组头部插入一个元素

IE 和DOM 事件流的区别

  1. 执行顺序不一样、
  2. 参数不一样
  3. 事件加不加on
  4. this 指向问题

b 继承a 的方法

JavaScript this 指针、闭包、作用域

事件委托是什么

让利用事件冒泡的原理,让自己的所触发的事件,让他的父元素代替执行!
让利用事件冒泡的原理,让自己的所触发的事件,让他的父元素代替执行!
http://www.webasily.com/?p=78 例子可见此链接

闭包是什么,有什么特性,对页面有什么影响

闭包就是能够读取其他函数内部变量的函数。

document load 和document ready 的区别

  • Document.onload 是在结构和样式加载完才执行js
  • Document.ready 原生种没有这个方法,jquery 中有$().ready(function)

IE 和标准下有哪些兼容性的写法

去掉数组中重复的数字

  1. 方法一
Array.prototype.unique = function(){
var len = this.length,
newArr = [],
flag = 1;
for(var i = 0; i < len; i++, flag = 1){
for(var j = 0; j < i; j++){
if(this[i] == this[j]){
flag = 0; //找到相同的数字后,不执行添加数据
}
}
flag ? newArr.push(this[i]) : '';
}
return newArr;
}
  1. 方法二
(function(arr){
var len = arr.length,
newArr = [],
flag;
for(var i = 0; i < len; i+=1, flag = 1){
for(var j = 0; j < i; j++){
if(arr[i] == arr[j]){ flag = 0; }
}
flag?newArr.push(arr[i]):'';
}
alert(newArr);
})([1, 1, 22, 3, 4, 55, 66]);

阶乘函数

//原型方法
Number.prototype.N = function(){
var re = 1;
for(var i = 1; i <= this; i++){
re *= i;
}
return re;
}
var num = 5;
alert(num.N());

window.location.search() 返回的是什么?

答:查询(参数)部分。除了给动态语言赋值以外,我们同样可以给静态页面,
并使用javascript 来获得相信应的参数值
返回值:?ver=1.0&id=timlq 也就是问号后面的!

window.location.hash 返回的是什么?

答:锚点, 返回值:#love ;

window.location.reload() 作用?

答:刷新当前页面。

阻止冒泡函数

function stopPropagation(e) {
e = e || window.event;
if(e.stopPropagation) { //W3C 阻止冒泡方法
e.stopPropagation();
} else {
e.cancelBubble = true; //IE 阻止冒泡方法
}
}
document.getElementById('need_hide').onclick = function(e) {
stopPropagation(e);
}

什么是闭包? 写一个简单的闭包?;

答:我的理解是,闭包就是能够读取其他函数内部变量的函数。在本质上,
闭包就是将函数内部和函数外部连接起来的一座桥梁。

function outer(){
var num = 1;
function inner(){
var n = 2;
alert(n + num);
}
return inner;
}
outer()();

看图答题

function changeObjectProperty (o) {
o.siteUrl = "http://www.csser.com/";
o = new Object();
o.siteUrl = "http://www.popcg.com/";
}
var CSSer = new Object();
changeObjectProperty(CSSer);
console.log(CSSer.siteUrl); //

如果CSSer 参数是按引用传递的,那么结果应该是
http://www.popcg.com/“,但实际结果却仍是”http://www.csser.com/“。事实是这
样的:在函数内部修改了引用类型值的参数,该参数值的原始引用保持不变。我们可
以把参数想象成局部变量,当参数被重写时,这个变量引用的就是一个局部变量,局
部变量的生存期仅限于函数执行的过程中,函数执行完毕,局部变量即被销毁以释放
内存。
(补充:内部环境可以通过作用域链访问所有的外部环境中的变量对象,但
外部环境无法访问内部环境。每个环境都可以向上搜索作用域链,以查询变量和函数
名,反之向下则不能。)

猜你喜欢

转载自blog.csdn.net/mangxi8200/article/details/81148826