JavaScript基础面试题总结02

1. JavaScript 内置的常用对象有哪些?并列举该对象常用的方法?

1. 对象及方法

Arguments 函数参数集合

Arguments[] 函数参数的数组

Arguments 一个函数的参数和其他属性

Arguments.callee 当前正在运行的函数

Arguments.length 传递给函数的参数的个数

2. Number 数值对象

Number.MAX_VALUE 最大数值

Number.MIN_VALUE 最小数值

Number.NaN 特殊的非数字值

Number.NEGATIVE_INFINITY 负无穷大,溢出时返回该值

Number.POSITIVE_INFINITY 正无穷大,溢出时返回该值

Number.toExponential( ) 用指数计数法格式化数字

Number.toFixed( ) 采用定点计数法格式化数字

Number.toLocaleString( ) 把数字转换成本地格式的字符串

Number.toPrecision( ) 格式化数字的有效位

Number.toString( ) 将—个数字转换成字符串

Number.valueOf( ) 返回原始数值

3. String 字符串对象

Length 获取字符串的长度。如:var len = strObj.length

toLowerCase() 将字符串中的字母转成全小写。如:strObj.toLowerCase()

toUpperCase() 将字符串中的字母转成全大写。如:strObj.toUpperCase()

charAt(index) 返回指定下标位置的一个字符。如果没有找到,则返回空字符串

substr() 在原始字符串,返回一个子字符串

substring() 在原始字符串,返回一个子字符串

区别:

“abcdefgh”.substring(2,3) = “c”

“abcdefgh”.substr(2,3) = “cde”

split() 将一个字符串转成数组

charCodeAt() 返回字符串中的第 n 个字符的代码

concat() 连接字符串

fromCharCode() 从字符编码创建—个字符串

indexOf() 返回一个子字符串在原始字符串中的索引值如果没有找到,则返回固定值 -1

lastIndexOf() 从后向前检索一个字符串

localeCompare() 用本地特定的顺序来比较两个字符串

match() 找到一个或多个正则表达式匹配的子字符串

replace() 替换一个与正则表达式匹配的子字符串

search() 检索与正则表达式相匹配的子字符串

slice() 抽取一个子串

toLocaleLowerCase() 把字符串转换成小写

toLocaleUpperCase() 将字符串转换成大写

toLowerCase() 将字符串转换成小写

toUpperCase() 将字符串转换成大写

toLowerCase()和toUpperCase()是两个经典的方法,借鉴自java.lang.String中的同名方法。

而toLocaleLowerCase()和toLocaleUpperCase()方法则是针对特定地区的方法。

一般来说,在不知道自己的代码将在那种语言环境中运行的情况下,还是使用针对地区的方法更稳妥一些。

valueOf() 返回 String 对象的原始值

4. Boolean 布尔对象

Boolean.toString() 将布尔值转换成字符串

Boolean.valueOf() Boolean 对象的原始值的布尔值

5. Array数组

length 属性 动态获取数组长度

join() 将一个数组转成字符串。返回一个字符串

reverse() 将数组中各元素颠倒顺序

delete 运算符 只能删除数组元素的值,而所占空间还在,总长度没变(arr.length)

shift() 删除数组中第一个元素,返回删除的那个值,并将长度减 1

pop() 删除数组中最后一个元素,返回删除的那个值,并将长度减 1

unshift() 往数组前面添加一个或多个数组元素,长度要改变。arrObj.unshift(“a” , “b,“c”)

push() 往数组结尾添加一个或多个数组元素,长度要改变。arrObj.push(“a” ,“b”, “c”)

concat() 连接数组

slice() 返回数组的一部分

splice() 插入、删除或替换数组的元素

toLocaleString() 把数组转换成局部字符串

toString() 将数组转换成一个字符串

forEach 遍历所有元素

  var arr = [1, 2, 3]
  arr.forEach(function (item, index) {
    // 遍历数组的所有元素
    console.log(index, item)
  })

every 判断所有元素是否都符合条件

  var arr = [1, 2, 3]
  var arr1 = arr.every(function (item, index) {
    if (item < 4) {
      return true
    }
  })
  console.log(arr1) // true

sort 对数组元素进行排序

  var arr = [1, 5, 2, 7, 3, 4]
  var arr2 = arr.sort(function (a, b) {
    // 从小到大
    return a - b
    // 从大到小
    return b - a
  })
  console.log(arr2) // 1,2,3,4,5,7

map 对元素重新组装,生成新数组

  var arr = [1, 5, 2, 7, 3, 4]
  var arr2 = arr.map(function (item, index) {
    return '<b>' + item + '</br>'
  })
  console.log(arr2) //  ['<b>1</br>', '<b>5</br>', '<b>2</br>', '<b>7</br>', '<b>3</br>', '<b>4</br>']

filter 过滤符合条件的元素

  var arr = [1, 2, 3, 4]
  var arr2 = arr.filter(function (item, index) {
    if (item > 2) {
      return true
    }
  })
  console.log(arr2) // [3, 4]

6. Function 函数构造器

Function.arguments[] 传递给函数的参数

Function.apply() 将函数作为一个对象的方法调用

Function.call() 将函数作为对象的方法调用

call()apply() 是预定义的函数方法。 两个方法可用于调用函数,两个方法的第一个参数必须是对象本身。

两者的区别在于第二个参数: apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。

Function.caller 调用当前函数的函数

Function.length 已声明的参数的个数

Function.prototype 对象类的原型

Function.toString() 把函数转换成字符串

7. Object 基础对象

Object 含有所有 JavaScript 对象的特性的超类

Object.constructor 对象的构造函数

Object.hasOwnProperty( ) 检查属性是否被继承

Object.isPrototypeOf( ) 一个对象是否是另一个对象的原型

Object.propertyIsEnumerable( ) 是否可以通过 for/in 循环看到属性

Object.toLocaleString( ) 返回对象的本地字符串表示

Object.toString( ) 定义一个对象的字符串表示

Object.valueOf( ) 指定对象的原始值

8. Date 日期时间

创建 Date 对象的方法

(1)创建当前(现在)日期对象的实例,不带任何参数

var today = new Date()

(2)创建指定时间戳的日期对象实例,参数是时间戳。

时间戳:是指某一个时间距离 1970 年 1 月 1 日 0 时 0 分 0 秒,过去了多少毫秒值(1 秒 =1000 毫秒)

var timer = new Date(10000) // 时间是 1970 年 1 月 1 日 0 时 0 分 10 秒

(3)指定一个字符串的日期时间信息,参数是一个日期时间字符串

var timer = new Date(“2015/5/25 10:00:00”)

(4)指定多个数值参数

var timer = new Date(2015+100,4,25,10,20,0) //顺序为:年、月、日、时、分、秒,年、月、日是必须的

方法:

Date.getFullYear() 返回 Date 对象的年份字段

Date.getMonth() 返回 Date 对象的月份字段

Date.getDate() 返回一个月中的某一天

Date.getDay() 返回一周中的某一天

Date.getHours() 返回 Date 对象的小时字段

Date.getMinutes() 返回 Date 对象的分钟字段

Date.getSeconds() 返回 Date 对象的秒字段

Date.getMilliseconds() 返回 Date 对象的毫秒字段

Date.getTime() 返回 Date 对象的毫秒表示

9. Math 数学对象

Math 对象是一个静态对象

Math.PI 圆周率

Math.abs() 绝对值

Math.ceil() 向上取整(整数加 1,小数去掉)

Math.floor() 向下取整(直接去掉小数)

Math.round() 四舍五入

Math.pow(x,y) 求 x 的 y 次方

Math.sqrt() 求平方根

10. RegExp 正则表达式对象

RegExp.exec() 检索字符串中指定的值。返回找到的值,并确定其位置。

RegExp.test( ) 检索字符串中指定的值。返回 true 或 false。

RegExp.toString( ) 把正则表达式转换成字符串

RegExp.globa 判断是否设置了 "g" 修饰符

RegExp.ignoreCase 判断是否设置了 "i" 修饰符

RegExp.lastIndex 用于规定下次匹配的起始位置

RegExp.source 返回正则表达式的匹配模式

11. Error 异常对象

Error.message 设置或返回一个错误信息(字符串)

Error.name 设置或返回一个错误名

Error.toString( ) 把 Error 对象转换成字符串

EvalError 在不正确使用 eval()时抛出

SyntaxError 抛出该错误用来通知语法错误

RangeError 在数字超出合法范围时抛出

ReferenceError 在读取不存在的变量时抛出

TypeError 当一个值的类型错误时,抛出该异常 URIError 由 URl 的编码和解码方法抛出

2. === 和 ==的区别?

===:三个等号称为等同符,既要判断值也要判断类型是否相等

==:两个等号称为等值符,等号只要值相等就可以

3. JavaScript 中什么情况下会返回 undefined 值?

  1. 访问声明,但是没有初始化的变量

  2. 访问不存在的属性

  3. 访问函数的参数没有被显式的传递值

  4. 访问任何被设置为 undefined 值的变量

  5. 没有定义 return 的函数隐式返回

  6. 函数 return 没有显式的返回任何内容

4. 如何区分数组和对象?

方法一:通过 ES6 中的 Array.isArray 来识别

Array.isArray([]) // true
Array.isArray({}) // false

方法二:通过 instanceof 来识别

[] instanceof Array // true
{} instanceof Array // SyntaxError语法错误

方法三:通过调用 constructor 来识别

[].constructor // 返回 Array 
{}.constructor // SyntaxError语法错误

方法四:通过 Object.prototype.toString.call 方法来识别

Object.prototype.toString.call([]) // '[object Array]'
Object.prototype.toString.call({}) // '[object Object]'

5. 列举三种强制类型转换和两种隐式类型转换?

强制

  1. 转化成字符串 toString(),String()

  2. 转换成数字 Number(),parseInt(),parseFloat()

  3. 转换成布尔类型 Boolean()

隐式

  1. 拼接字符串

  2. - * / % ==

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

端端1023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值