1. js是什么,有什么特点?
2、跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如Windows、Linux、Mac、Android、iOS等)。
对使用的数据类型未做出严格的要求,可以进行类型转换,简单又灵活。
JavaScript对用户的响应,是以事件驱动的方式进行的。在网页(Web Page)中执行了某种操作所产生的动作,被称为“事件”(Event)。例如按下鼠标、移动窗口、选择菜单等都可以被视为事件。当事件发生后,可能会引起相应的事件响应,执行某些对应的脚本,这种机制被称为“事件驱动”。
一种基于对象的脚本语言,这意味着JavaScript能运用其已经创建的对象。因此,许多功能可以来自于脚本环境中对象的方法与脚本的相互作用。
JavaScript是一种安全性语言,它不允许访问本地的硬盘,并不能将数据存入到服务器上,不允许对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互。从而有效地防止数据的丢失。
2. 基本数据类型有哪些?(可选 let,const,var的区别? 变量提升? 暂时性死区?)
函数提升优先于变量提升,函数提升会把整个函数挪到作用域顶部,变量提升只会把声明挪到作用域顶部
var 存在提升,我们能在声明之前使用。 let 、 const 因为暂时性死区的原因,不能在声明前使用
var 在全局作用域下声明变量会导致变量挂载在 window 上,其他两者不会
let 和 const 作用基本一致,但是后者声明的变量不能再次赋值
3. 数据存储——堆栈是什么?
堆栈是一种执行“后进先出”算法的数据结构。它是在内存中开辟一个存储区域,数据一个一个顺序地存入(也就是“压入——push”)这个区域之中。有一个地址指针总指向最后一个压入堆栈的数据所在的数据单元,存放这个地址指针的寄存器就叫做堆栈指示器。开始放入数据的单元叫做“栈底”。数据一个一个地存入,这个过程叫做“压栈”。在压栈的过程中,每有一个数据压入堆栈,就放在和前一个单元相连的后面一个单元中,堆栈指示器中的地址自动加1。读取这些数据时,按照堆栈指示器中的地址读取数据,堆栈指示器中的地址数自动减1。这个过程叫做“弹出pop”。如此就实现了后进先出的原则。 堆栈是计算机中最常用的一种数据结构,比如函数的调用在计算机中是用堆栈实现的。 堆栈可以用数组存储,也可以用以后会介绍的链表存储。
4. 阅读代码,判断结果,为什么?"11" + 2 - "3"等于109?
当“+”号两边有一边是字符串时,此时“+”号为连接符;“- * /”运行时,系统会默认判断是不是非数字类型,然后进行自动类型转换并计算
5. break/continue的区别?
break: 结束当前循环并退出当前循环体。break还可以退出switch语句
continue: 循环体中后续的语句不执行,但是循环没有结束,继续进行循环条件的判断(for循环还会i++)。continue只是结束本次循环
6. ==和===的区别?
==用于一般比较,===用于严格比较,==在比较的时候可以转换数据类型,===严格比较,只要类型不匹配就返回flase。
7. 0,{},[],"",undefind,null,0,1,-1 是true还是false?
8. 值传递与引用传递有什么区别?
(形式参数类型是基本数据类型和String):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。
引用传递: (形式参数类型是引用数据类型参数除去String):也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数。
9.var a = 100;function f(a) { a -= 10;}f(a);console.log(a);(可选 return与yield的区别?)
共同点:return和yield都用来返回值;在一次性地返回所有值场景中return和yield的作用是一样的。
不同点:如果要返回的数据是通过for等循环生成的迭代器类型数据(如列表、元组),return只能在循环外部一次性地返回,yeild则可以在循环内部逐个元素返回。
10.xxx(math,date,string,array,json,object)对象,都有哪些常用属性和方法以及什么用?
toLocaleDateString();将本地年,月,日转换为字符串类型输出
toLocaleTimeString();将本地时,分,秒转换为字符串类型输出 12小时制
toLocaleString();将本地时间转换为字符串类型输出(年,月,日,时,分,秒)
4.substring(参数1,参数2)从参数1截取到参数2的前一个字符
strObj.split("参数1",参数2); :分割符 返回值:数组
strObj.lastIndexOf(参数1,参数2) 查找子串 返回值:如果找到返回子串位置, 如果找不到返回-1;
strObj.charAt(参数) 根据索引号查找子串 返回值:子串
match(); 可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。 返回值:检索到的值
反序列化 JSON.stringify(参数) 把json格式转换为字符串
序列化 JSON.parse(参数) 把字符串转换为json格式
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是什么数据格式,有什么作用?
12.xml,html,json有什么区别?
不必把数据强加到已定义好的格式中,而是要为数据自定义合适的标记
如果文档来自于服务器,就必须得保证文档含有正确的首部信息。若文档类型不正确,那么 responseXML 的值将是空的
当浏览器接收到长的 XML 文件后, DOM 解析可能会很复杂
作为一种数据传输格式,JSON 与 XML 很相似,但是它更加灵巧。
从服务器端发送的 HTML 代码在浏览器端不需要用 JavaScript 进行解析。
缺点:若需要通过 AJAX 更新一篇文档的多个部分,HTML 不合适innerHTML 并非 DOM 标准。
13.局部作用域和全部作用域?
直接编写在 script 标签之中的JS代码,都是全局作用域;
在全局作用域中有一个全局对象 window(代表的是一个浏览器的窗口,由浏览器创建),可以直接使用。
在函数内部就是局部作用域,这个代码的名字只在函数的内部起作用
调用函数时创建函数作用域,函数执行完毕之后,函数作用域销毁;
每调用一次函数就会创建一个新的函数作用域,它们之间是相互独立的。
14.javascript 由哪几部分组成?
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看作是空的对象