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看作是空的对象