js基础面试题

1.js是什么,有什么特点?

1,脚本语言。Javascript是一种解释型的脚本语言, c、c++等语言先编译后执行,而JavaScript是在程序的运行过程中逐行进行解释。

2·基于对象。Javascript是一种基于对象的脚本语言,它不仅可以创建对象,也能使用现有的对象。

3·简单。 Javascript语言中采用的是弱类型的变量类型,对使用的数据类型未做出严格的要求,是基于Java基本语句和控制的脚本语言,其设计简单紧凑。

4,动态性。JavaScript是一种采用事件驱动的脚本语言,它不需要经过Web服务器就可以对用户的输入做出响应。

5. 跨平台性。JavaScript 脚本语言不依赖于操作系统, 仅需要浏览器的支持。

基本数据类型有哪些?

2.(可选 let,const,var的区别? 变量提升? 暂时性死区?

1.let和const都是块级作用域,不存在变量前提

2.const是声明常量,不允许改变。但是const定义的是一个对象,keep的仅仅是对象的地址,对象内的属性依旧可以被改变。

3.var作用域为函数作用域

3.数据存储——堆栈是什么?

堆:计算机中引用类型数据的存储空间

栈:计算机中基本数据类型的存储空间

引用类型的栈会定义一个地址,在通过这个地址映射到对应的堆上,然后在这个堆里面寻找定义的某一个值,

4.阅读代码,判断结果,为什么?"11" + 2 - "3"?

字符串加上任意东西都会变成字符串的形式

JS是弱语言类型,如果两个数字型的字符串相减,或者其中一个为字符串时,那么会自动转换为数字类型的进行运算

5.break/continue的区别?

1.break

用break语句可以使流程跳出switch语句体,也可以用break语句在循环结构终止本层循环体,从而提前结束本层循环。

2.continue

continue语句的作用是跳过本次循环体中余下尚未执行的语句,立即进行下一次的循环条件判定,可以理解为仅结束本次循环。

6.==和===的区别?

== 表示相等 (值相等)

===表示恒等(类型和值都要相等)

js在比较的时候如果是 == 会先做类型转换,再判断值得大小,如果是===类型和值必须都相等。

7."0",{},[],"",undefind,null,0,1,-1 是true还是false?

var a=0,//false

b={},//true

c=[],//true

d="",//false

e=undefined,//false

f=null,//false

g=1,//true

k=-1,//true

m="0"//true

if(m){

console.log(true)

}else{

console.log(false)

}

8.值传递与引用传递有什么区别?

值传递:

传入函数的参数是外部定义的变量的数据的复制,将其复制后重新在内存中的新区域进行存放数据。与原外部定义变量的变化没有关系。一般用来传递JS中的基本数据类型。

JS中的基本数据类型有:string number undefined boolean null.

引用传递:

传递的是外部变量定义的数据在内存中的地址信息。两个变量指向同一个内存中的数据。无论函数的内部变量还是外部变量来操作这个数据,另外一个也会相应的发生改变。一般用来传递复杂类型数据。

9.return和yield的异同

共同点:return和yield都用来返回值;在一次性地返回所有值场景中return和yield的作用是一样的。

不同点:如果要返回的数据是通过for等循环生成的迭代器类型数据(如列表、元组),return只能在循环外部一次性地返回,yeild则可以在循环内部逐个元素返回。

10.xxx(math,date,string,array,json,object)对象,都有哪些常用属性和方法以及什么用?

Math对象

1.Math.PI 圆周率

2.Math.ceil 向上取整

3.Math.floor() 向下取整

4.Math.round(num) 四舍五入

5.Math.max(x,y...)返回最大值

Math.min(x,y...)返回最小值

6.Math.pow() 幂次方

7.Math.abs() 绝对值

8.Math.random() 随机数,默认取(0,1)

Date对象

1.getFullYear();获取年份

2.getMonth()+1;获取月份,从0开始,要加1

3.getDate();获取天份

4.getHours();获取小时,是24小时制

5.getMinutes();获取分钟

6.getSeconds();获取秒

7.getMilliseconds();获取毫秒

8.getDay();获取星期 【0-6】星期日为0

9.偏移量

getYear();距离1900年过了多久年;

getTime();距离1970年过了多少毫秒;

10.

toLocaleDateString();将本地年,月,日转换为字符串类型输出

toLocaleTimeString();将本地时,分,秒转换为字符串类型输出 12小时制

toLocaleString();将本地时间转换为字符串类型输出(年,月,日,时,分,秒)

String对象

2.indexOf(参数1,参数2);下标从零开始

3.substr(参数1,参数2);下标从零开始

4.substring(参数1,参数2)从参数1截取到参数2的前一个字符

5. replace(参数1,参数2) ;替换

strObj.split("参数1",参数2);

:分割符

返回值:数组

strObj.lastIndexOf(参数1,参数2) 查找子串

返回值:如果找到返回子串位置, 如果找不到返回-1;

strObj.charAt(参数) 根据索引号查找子串

返回值:子串

match();

可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

返回值:检索到的值

Array对象

forEach();遍历数组

map();映射

filter();过滤

reduce();迭代

shift();删除第一个元素

返回值:被删除的元素

pop();删除最后一个元素

返回值:被删除的元素

unshift();在头部添加元素

push();在尾部添加元素

splice()添加并删除

concat()连接数组

排序 sort(参数);

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

join()分割数组

slice(参数1,参数2);选定/截取数组

JSON对象

反序列化

JSON.stringify(参数)

把json格式转换为字符串

序列化

JSON.parse(参数)

把字符串转换为json格式

Object对象

一、属性

 Object自带一个prototype的属性,即Object.prototype,Object.prototype本身也是一个对象,也会有一些属性和方法。

 1、属性 Object.prototype.writable:默认为false 

Object.prototype.enumerable:默认为false 

Object.prototype.configurable:默认为false

Object.prototype.constructor:用于创建一个对象的原型

 2、常用方法 Object.prototype.hasOwnProperty():返回一个布尔值,表示某个对象是否含有指定的属性,而且此属性非原型链继承。

Object.prototype.isPrototypeOf():返回一个布尔值,表示指定的对象是否在本对象的原型链中。

Object.prototype.propertyIsEnumerable():判断指定属性是否可枚举。

Object.prototype.toString():返回对象的字符串表示。

Object.prototype.watch():给对象的某个属性增加监听。

Object.prototype.unwatch():移除对象某个属性的监听。

Object.prototype.valueOf():返回指定对象的原始值。

二、方法 

Object.assign(target, …sources):把任意多个的源对象自身的可枚举属性拷贝给目标对象,然后返回目标对象。

Object.create(proto,[propertiesobject]):创建一个拥有指定原型和若干个指定属性的对象。

Object.defineProperties(obj, props):在一个对象上添加或修改一个或者多个自有属性,并返回该对象。

11.json是什么,数据格式,有什么作用?

json的作用(json是一种与语言无关的数据交换的格式)

使用ajax进行前后台数据交换

移动端与服务端的数据交换

Json的格式

对象格式

数组/集合格式

12.xml,html,json有什么区别?

XML格式:

优点:

XML 是一种通用的数据格式。

不必把数据强加到已定义好的格式中,而是要为数据自定义合适的标记

利用 DOM 可以完全掌控文档

缺点:

如果文档来自于服务器,就必须得保证文档含有正确的首部信息。若文档类型不正确,那么 responseXML 的值将是空的

当浏览器接收到长的 XML 文件后, DOM 解析可能会很复杂

JSON格式:

优点:

作为一种数据传输格式,JSON 与 XML 很相似,但是它更加灵巧。

JSON 不需要从服务器端发送含有特定内容类型的首部信息。

缺点:

语法过于严谨

代码不易读

eval 函数存在风险

HTML格式:

优点:

从服务器端发送的 HTML 代码在浏览器端不需要用 JavaScript 进行解析。

HTML 的可读性好。

HTML 代码块与 innerHTML 属性搭配,效率高。

缺点:若需要通过 AJAX 更新一篇文档的多个部分,HTML 不合适innerHTML 并非 DOM 标准。

13.局部作用域和全部作用域?

全局作用域:

  直接编写在 script 标签之中的JS代码,都是全局作用域;

  或者是一个单独的 JS 文件中的。

  全局作用域在页面打开时创建,页面关闭时销毁;

  在全局作用域中有一个全局对象 window(代表的是一个浏览器的窗口,由浏览器创建),可以直接使用。

局部作用域(函数作用域):

  在函数内部就是局部作用域,这个代码的名字只在函数的内部起作用

  调用函数时创建函数作用域,函数执行完毕之后,函数作用域销毁;

  每调用一次函数就会创建一个新的函数作用域,它们之间是相互独立的。

14.javascript 由哪几部分组成?

1.ECMAScript

ECMA组织标准,如函数,标签的定义,因为网景开发了JavaScript,一年后微软又开发了JScript,为了让JavaScript成为全球标准,所以几个公司组织制定了JavaScript语言的标准,被称为:ECMAScript标准或ECMA-262标准(European Computer Manufactruers Association)

2.DOM(document object model):W3C标准,主要针对文本内容标准的定义

3.BOM(browser object model):无组织定义标准,一般比较乱,主要针对浏览器

15.null,undefined的区别?

1、Null类型,代表空值,代表一个空对象指针,使用typeof运算得到object,所以可以认为它是一个特殊的对象值;

2、defined类型,当一个声明了一个变量未初始化时,得到的就是undefined;

3、undefined是访问一个未初始化的变量的返回值,而null是访问一个尚未存在的对象时所返回的值。因此,可以把undefined看作是空的变量,而null看作是空的对象

上一篇:Eclipse Memory Analyzer 内存分析


下一篇:$.ajax()方法详解 ajax之async属性 【原创】详细案例解剖——浅谈Redis缓存的常用5种方式(String,Hash,List,set,SetSorted )