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中去。

JS初级面试(一)_第1张图片

学习是一件很快乐的事,这种快乐来自于你的思考。完成一项学习任务固然重要,但更重要的是在完成的过程中学到了什么,掌握了什么,遇到一些什么问题,为什么会出现这种问题,根源是什么,都有哪些解决方案,什么样的情况适合这个方案。只有在不断的思考,你的能力才会有所提升!

你可能感兴趣的:(JS初级面试(一))