真融宝面试题——JS部分

1sessionStorage localStorage cookie 之间的差别

sessionStorage 和 localStorage 是HTML5 Web Storage API 供给的,可以便利的在web恳求之间保存数据。

共同点:都是在浏览器端存储的数据,且同源的。

差别: cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递。而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。

cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。

存储大小限制也不同。cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标识。sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。

数据有效期不同。sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。

作用域不同。sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。

2JavaScript中什么是捕捉事件和冒泡事件?

事件冒泡是指对象嵌套时,底层事件处理完以后是否向上层对象传递。事件冒泡是为了逐级响应事件,即事件由子元素向祖先元素传播的,例如:

从div-body-html-document,Code:<div id="divid" onclick="点击object"></div>

事件捕捉是在指定的事件发生时,给出处理的方法,比如说鼠标点击、移动等;事件捕获是为了逐层确定事件的来源,即事件由祖先元素向子元素传播,例如:

从document-html-body-div,Code:document.getElementById("divid")

像firefox、chrome、safari这类标准浏览器中,事件传播存在捕获阶段。

适用于标准浏览器的addEventListener则有三个参数,addEventListener(type,fn,boolean),前面两个参数不解释,第三个参数boolean,就是决定注册事件发生在捕获阶段还是冒泡阶段,具体参考如下:true : 捕获阶段    false : 冒泡阶段

3Ajax异步传输数据—页面格式

首先在jquery框架下使用ajax很方便。导入jquery.js 后,一进入页面就加载Ajax 
<script> 
$.ajax({

type:"post",
    url:‘‘,//写 ‘××××.action‘ 
    data:‘‘//写的是传递参数相当于?id="";

success:function(msg){ 
         alert(msg);//输出从后台传过来的数据流 
    }, 
    error:function(){ 
         alert("loading failed...") 
    } 
}); 
</script>

例如:Java代码  

4JSON数据交换格式?

JSON有两种结构:

 1. “名称/值”对的集合(name/value)。不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list)或者关联数组(associative array)。

例如:JSON 表示"名称 / 值对":

  { "firstName": "Brett" }

创建包含多个"名称 / 值对"的 记录,比如:

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }

2. 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。当需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性。

例如:使用 JSON,就只需将多个带花括号的记录分组在一起:

  { "people": [

  { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },

  { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"},

  { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }

]}

     将 JSON 数据赋值给变量

  例如,创建一个新的 JavaScript 变量,然后将 JSON 格式的数据字符串直接赋值给它:

var people = { "programmers": [

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },

  { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb" },

  { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }

  ],

  "authors": [

  { "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },

  { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },

  { "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }

  ],

  "musicians": [

  { "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },

  { "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }

  ] }

  现在 people包含前面看到的 JSON 格式的数据。但是,访问数据的方式还不明显。

     访问数据

  上面的长字符串实际上只是一个数组;将这个数组放进 JavaScript 变量之后,就可以很轻松地访问它。实际上,只需用点号表示法来表示数组元素。所以,要想访问 programmers 列表的第一个条目的姓氏,只需在 JavaScript 中使用下面这样的代码:

  people.programmers[0].lastName;

  注意,数组索引是从零开始的。所以,这行代码首先访问 people变量中的数据;然后移动到称为 programmers的条目,再移动到第一个记录([0]);最后,访问 lastName键的值。结果是字符串值 “McLaughlin”。

  下面是使用同一变量的几个示例。

  people.authors[1].genre // 值为 "fantasy"

  people.musicians[3].lastName // 未定义

people.programmers[2].firstName // 值为"Elliotte"

     转换回字符串

  将对象转换回文本格式,在 JavaScript 中这种转换也很简单:

String newJSONtext = people.toJSONString();

5、用js编写函数,输出数组中最大的数

function getMaximin (arr,maximin) {
    if (maximin == "max") {
         return Math.max.apply(Math, arr);
    }else if (maximin == "min") {
         return Math.min.apply(Math, arr);
    }

}
var a = [3,2,4,2,10]
var b = [12,4,45,786,9,78]

alert("aMax:" + getMaximin(a,"max") +
"---aMin:" + getMaximin(a,"min") + "---bMax:" +
getMaximin(b,"max") + "---bMin:" + getMaximin(b,"min"))   //aMax:10---aMin:2---bMax:786---bMin:4

var max = Math.max.apply(Math,values); 意思执行Math对象中的max函数,参数为values,并将返回结果赋值于max,其中apply 函数为JS的内置函数,作用为执行该函数,且只能被函数调用。

apply函数中的第一个参数为函数所属对象,通常为当前页面(this)。第二个参数为传入到函数中的参数数组(必须为数组)。

6js调用函数返回一个数组,如何将该数组的内容一条条写进页面内?

var arr=你的数组;

for(var i=0;i<arr.length;i++)

{

$("#写的html位置的父节点ID").innerhtml=arr[i];

}

7、用js编写函数,实现字符串反转

方法1:

<script type="text/javascript">

var str="abcdeg";

function demo(str){

var
str2="";

for(var
i=0;i<str.length;i++){

str2+=str.charAt(str.length-i-1);

}

document.write(str+"<br
/>"+str2)

}

demo(str);

</script>

方法2:

<input type="textfield" id="input"/>

<div id="result"></div>

<input type="button" value="reverse"
onclick="reverse()"/>

<script language="javascript">

function reverse(){

var
str=document.getElementById("input").value;

var
a=str.split(‘‘);

var result=new
Array();

while(a.length)

{

result.push(a.pop());

}

document.getElementById("result").innerHTML=result.join(‘‘);

}

</script>

时间: 2024-10-25 20:24:30

真融宝面试题——JS部分的相关文章

真融宝面试题——css部分

1.<b></b>与<strong></strong>有什么不同? 1) <b>标签是一个实体标签,它所包围的字符将被设为bold(粗体),而<strong>标签是一个逻辑标签,它的作用是加强字符的语气,一般来说,加强字符的语气是通过将字符变为bold(粗体)来实现的.这个strong完全可以定义成别的样式的强调效果 2) strong是web标准中xhtml的标签,意思是“强调”:b是html的,意思是bold(粗体). 2.CSS

前端面试题 -- JS篇

前端面试题 -- JS篇 类型 1.js中有哪些数据类型,并解释清楚原始数据类型和引用数据类型 js中共有null,undefined, string,number,boolean,object六种数据类型. 原始数据类型: null,undefined, string,number,boolean 引用数据类型:object 两者的区别:1)值存储方式不同: 原始数据类型:将变量名和值都存储在栈内存中 引用数据类型:将变量名存储在栈内存中,将值存储在堆内存中,并在栈内存中存储值的地址,该地址指

仿淘宝 css,js 等静态资源合并压缩输出的 jsp 脚本 combo.jsp

原文:仿淘宝 css,js 等静态资源合并压缩输出的 jsp 脚本 combo.jsp 源代码下载地址:http://www.zuidaima.com/share/1550463482612736.htm 仿淘宝 css,js 等静态资源合并压缩输出的 jsp 脚本 自己在项目中有用到,用于脚本合并输出 , 使用示例: <link rel="stylesheet" type="text/css" href="http://www.zuidaima.c

淘宝笔试题:一颗完全二叉树,要求给所有节点加上一个pNext指针,指向同一层的相邻节点;如果当前节点已经是该层的最后一个节点,则将pNext指针指向NULL

题目:对于一颗完全二叉树,要求给所有节点加上一个pNext指针,指向同一层的相邻节点:如果当前节点已经是该层的最后一个节点,则将pNext指针指向NULL:给出程序实现,并分析时间复杂度和空间复杂度. 运用队列,按层遍历,每次遍历一层时,添加新指针,由于每个节点只需要进队一次出队一次,时间复杂度为O(n),空间复杂度为O(n),具体代码如下: #include<iostream> #include<vector> #include<queue> using namesp

软考信息安全工程师考试真题汇总及试题分布统计

软考信息安全工程师考试真题汇总及试题分布统计 https://www.moondream.cn/?p=274 2017年信息安全工程师真题 链接:https://pan.baidu.com/s/1iGLowkGPL6HOLKgiN4LEWg    密码:请进入备考群获取 2016年信息安全工程师真题 链接:https://pan.baidu.com/s/1c5E9EdI1TIzawK1Bm-TMEQ       密码:请进入备考群获取 2016年下半年信息安全工程师考试真题含答案(上午题) 20

前端面试题 | JS部分(附带答案)

目前在找工作,所以各方收集了一堆面试题.其实刷面试题的过程也能更新自己对知识的认识,所以也提醒自己多看多理解.如果对下面题目有更深理解,会实时更新.遇到新题目,也会不定时更新.希望能帮助到部分朋友- 一.各种函数方法定义及区别 1. typeof运算符和instanceof运算符以及isPrototypeOf()方法的区别 typeof是一个运算符,用于检测数据的类型,比如基本数据类型null.undefined.string.number.boolean,以及引用数据类型object.func

高级前端面试题 js 2

第 1 题:(滴滴.饿了么)写 React / Vue 项目时为什么要在列表组件中写 key,其作用是什么? 1. 更准确因为带key就不是就地复用了,在sameNode函数 a.key === b.key对比中可以避免就地复用的情况.所以会更加准确. 2. 更快利用key的唯一性生成map对象来获取对应节点,比遍历方式更快.主要是为了提升diff[同级比较]的效率.自己想一下自己要实现前后列表的diff,如果对列表的每一项增加一个key,即唯一索引,那就可以很清楚的知道两个列表谁少了谁没变.而

js面试题--------JS中数字和字符,布尔类型相加相减问题

JS中数字和字符相加相减问题 <html lang="en"> <head> <meta charset="utf-8" /> <title></title> </head> <body> </body> </html> <script type="text/javascript"> var a = 100; var b = &

前端面试题js和jQuery

真正面试中,面试官往往采用的是由难到易的套路,那javascript和jQuery就是重中之重了,以及针对项目和所用技术方面的一些问题也就是你的必备储粮啦! JavaScript 什么是闭包(closure),为什么要用它? 闭包简单的说就是一个函数能访问外部函数的变量,这就是闭包,不理解就看代码,例如: function aa(x){ var num=1; function bb(y){ console.log(x+y+(++num)); } } aa函数中的bb函数就是闭包了,bb函数可以使