JS初级面试(一)
web前端开发是一项很特殊的工作,涵盖的知识面非常广,它既有具体的技术,又有抽象的理念。
1.关于javascript的说法:
javascript是基于对象的、事件驱动的脚本程序设计语言。所谓对象是指任何事物都可以封装成类,而一个类中具体的某个事物就是这个类的对象;所谓事件是指为这些事件定义一些动作,当处理这些事件后就执行相关的代码,进行一些操作。
2.如何截取字符串www.zhaopeirong.cn中的zhaopeirong?
采用substr方法。
定义和用法:substr方法用于返回一个从指定位置开始的指定长度的子字符串。
语法:stringObject.substr(start[,length])
参数描述:start必需。它是所需的子字符串的起始位置。字符串中的第一个字符的索引为0。
length可选。指在返回的子字符串中应该包括的字符个数。
示例代码如下:
var str="www.zhaopeirong.cn";
var result=str.substr(4,11);
3.编写一个方法,求一个字符串的字符长度。
示例代码如下:
function getLength(str){
return str.length;
}
var result=getLength("www.zhaopeirong.cn");
4.给出一个字符串str="www.zhaopeirong.cn",要求找出里面的字符串zhaopeirong,使用JavaScript实现。
采用indexOf()方法。
返回字符indexOf(string)中字符string在父串首次出现的位置,从0开始!没有返回-1;方便判断和截取字符串。示例代码如下:
var str="www.zhaopeirong.cn";
var serach="zhaopeirong";
var start=str.indexOf(search);
var result=str.substring(start,start+search.length);
5.JavaScript的typeof都返回哪些数据类型?
undefined、boolean、string、number、object、function。
6.“5”+3的结果是多少?为什么?
结果是53 。
这时的5不是一个数字,而是一个字符串,“+”起到了连接作用,不是加,所以结果是53 。
7.请自定义一个函数,实现字符串反转。
JavaScript实现字符串反转主要是把字符串从末尾开始的每一个元素截取后,再重新组成一个新的字符串。示例代码如下:
function revStr(str){
var tmpStr="";
for (var l=str.length-1;l>=0;l--){
tmpStr+=str.charAt(l);
}
return tmpStr;
}
var str="abcdeg";
console.log( revStr(str));
8.字符串操作主要有哪些?
(1)求字符串长度。
(2)字符串赋值。
(3)连接字符串操作。
(4)求子串。
(5)字符串比较。
(6)子串定位。
(7)字符串插入。
(8)字符串删除。
(9)字符串替换。
9.JavaScript的两种变量范围有什么不同?
全局变量无论在函数内部还是外部都可以访问,而局部变量只能在函数内部访问。
全局变量:当前页面内有效。
局部变量:方法内有效。
10.JavaScript中声明变量有var和没有var的区别。
JavaScript中变量声明的作用域是以函数为单位的,在函数内部,有var和
没有var声明的变量是不一样的。有var声明的是局部变量,没有var声明的是全局变量。在JavaScript的函数作用域内,声明的变量或内部函数在函数体内都是可见的。这意味着,函数在定义之前可能已经可用。函数定义有两种方式,一种是函数定义表达式,一种是函数声明语句。函数声明语句“被提前”到外部脚本或外部函数作用域的顶部。所以,以这种方式声明的函数,可以被它定义之前出现的代码所调用。而函数定义表达式中,变量的声明被提前了,但是给变量的赋值时不会提前的。所以,以表达式方式定义的函数在函数定义之前无法调用。
在全局作用域内声明变量时,有var和没有var是有区别的。使用var语句重复声明语句是合法且无害的。如果重复声明且带有赋值,那么就和一般的赋值语句没差别。如果尝试读取没有声明过的变量,JavaScript会报错。
11.有一个字符串abcd-ef-ghi,请用JavaScript将它处理成abcd&ef&ghi。
代码如下:
var str= "abcd-ef-ghi";
var arr1=str.split('-');
var result=arr1.reverse().join("join");
12.“undefined”和“undeclared”变量分别指什么?
根本区别在于,undefined是JavaScript语言类型,而undeclared确是一种JavaScript语法错误。
在JavaScript中有两个表示“空”的值:undefined和null,其中比较有用的是undefined。undefined是一个值为undefined的类型。JavaScript语言也定义了一个全局变量,它的值是undefined,这个变量也被称为undefined。但是这个变量不是一个常量,也不是一个关键字。这意味着它的值可以轻易被覆盖。为了避免可能对undefined值的改变,一个常用的技巧是使用一个传递到匿名包装器的额外参数。在调用时,这个参数不会获取任何值。
而undeclared则是一种语法错误,其实访问undeclared的变量并非会中断浏览器执行。在浏览器运行上下文中,undeclared的变量简单可以认为没有var a这样定义变量。JavaScript引擎执行的时候,由于无法找到其对应的上下文(scope),所以会简单地认为该变量是全局的变量,就是会把该变量定义到window中去。