61.作用域的分类
参考答案:块作用域、词法作用域、动态作用域
解析:
1 块作用域 花括号 {}
2 词法作用域(js 属于词法作用域) 作用域只跟在何处被创建有关系,跟在何处被调用没有关系
3 动态作用域 作用域只跟在何处被调用有关系,跟在何处被创建没有关系
参与互动
62.js 属于哪种作用域
参考答案:词法作用域(函数作用域)
解析:
参与互动
63.浮点数精度
参考答案:参考
参与互动
64.自执行函数? 用于什么场景?好处?
参考答案:
好处:防止变量弥散到全局,以免各种 js 库冲突。隔离作用域避免污染,或者截断作用域链,避免闭包造成引用变量无法释放。利用立即执行特性,返回需要的业务函数或对象,避免每次通过条件判断来处理
场景:一般用于框架、插件等场景
参与互动
65.多个页面之间如何进行通信
参考答案:有如下几个方式:
参与互动
66.css 动画和 js 动画的差异
参考答案:
1.代码复杂度,js 动画代码相对复杂一些 2.动画运行时,对动画的控制程度上,js 能够让动画,暂停,取消,终止,css 动画不能添加事件 3.动画性能看,js 动画多了一个 js 解析的过程,性能不如 css 动画好
解析:参考
参与互动
67.如何做到修改 url 参数页面不刷新
参考答案:
HTML5 引入了 history.pushState() 和 history.replaceState() 方法,它们分别可以添加和修改 历史 记录条目。
假设当前页面为 foo.html ,执行上述代码后会变为 bar.html ,点击浏览器后退,会变为 foo.html ,但浏览器并不会刷新。 pushState() 需要三个参数: 一个状态对象, 一个标题 (目前被忽略), 和 (可选的) 一个 URL.让我们来解释下这三个参数详细内容:
参与互动
68.数组方法 pop() push() unshift() shift()
参考答案:
参与互动
69.事件绑定与普通事件有什么区别
参考答案:
参与互动
70.IE 和 DOM 事件流的区别
参考答案:
1.事件流的区别
IE 采用冒泡型事件 Netscape 使用捕获型事件 DOM 使用先捕获后冒泡型事件 示例:
复制代码代码如下:
冒泡型事件模型: button->p->body (IE 事件流)
捕获型事件模型: body->p->button (Netscape 事件流)
DOM 事件模型: body->p->button->button->p->body (先捕获后冒泡)
2.事件侦听函数的区别
IE 使用:
DOM 使用:
bCapture 参数用于设置事件绑定的阶段,true 为捕获阶段,false 为冒泡阶段。
参与互动
一、不定项选择题(每题3分,共30分)\x0d\x0a1.声明一个对象,给它加上name属性和show方法显示其name值,以下代码中正确的是(D)\x0d\x0aA.varobj=[name:"zhangsan",show:function(){alert(name)}]\x0d\x0aB.varobj={name:”zhangsan”,show:”alert(this.name)”}\x0d\x0aC.varobj={name:”zhangsan”,show:function(){alert(name)}}\x0d\x0aD.varobj={name:”zhangsan”,show:function(){alert(this.name)}}\x0d\x0a2.以下关于Array数组对象的说法不正确的是(CD)\x0d\x0aA.对数组里数据的排序可以用sort函数,如果排序效果非预期,可以给sort函数加一个排序函数的参数\x0d\x0aB.reverse用于对数组数据的倒序排列\x0d\x0aC.向数组的最后位置加一个新元素,可以用pop方法\x0d\x0aD.unshift方法用于向数组删除第一个元素\x0d\x0a3.要将页面的状态栏中显示“已经选中该文本框”,下列JavaScript语句正确的是(A)\x0d\x0aA.window.status=”已经选中该文本框”\x0d\x0aB.document.status=”已经选中该文本框”\x0d\x0aC.window.screen=”已经选中该文本框”\x0d\x0aD.document.screen=”已经选中该文本框”\x0d\x0a4.点击页面的按钮,使之打开一个新窗口,加载一个网页,以下JavaScript代码中可行的是(AD)\x0d\x0aA.\x0d\x0aB.\x0d\x0aC.\x0d\x0aD.\x0d\x0a\x0d\x0a\x0d\x0a5.使用JavaScript向网页中输出hello,以下代码中可行的是(BD)\x0d\x0aA.\x0d\x0adocument.write(hello)\x0d\x0a\x0d\x0aB.\x0d\x0adocument.write(“hello”)\x0d\x0a\x0d\x0aC.\x0d\x0ahello\x0d\x0a\x0d\x0aD.\x0d\x0a\x0d\x0adocument.write(“hello”)\x0d\x0a\x0d\x0a\x0d\x0a6.分析下面的代码:\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0afunctionwriteIt(value){document.myfm.first_text.value=value}\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a以下说法中正确的是(CD)\x0d\x0aA.在页面的第二个文本框中输入内容后,当鼠标离开第二个文本框时,第一个文本框的内容不变\x0d\x0aB.在页面的第一个文本框中输入内容后,当鼠标离开第一个文本框时,将在第二个文本框中复制第一个文本框的内容\x0d\x0aC.在页面的第二个文本框中输入内容后,当鼠标离开第二个文本框时,将在第一个文本框中复制第二个文本框的内容\x0d\x0aD.在页面的第一个文本框中输入内容后,当鼠标离开第一个文本框时,第二个文本框的内容不变\x0d\x0a7.下面的JavaScript语句中,(D)实现检索当前页面中的表单元素中的所有文本框,并将它们全部清空\x0d\x0aA.for(vari=0i\x0d\x0a\x0d\x0a\x0d\x0afunctioncloseWin(){\x0d\x0a//在此处添加代码\x0d\x0aif(confirm(“确定要退出吗?”)){\x0d\x0awindow.close()\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a2、写出简单描述html标签(不带属性的开始标签和结束标签)的正则表达式,并将以下字符串中的html标签去除掉(15分)\x0d\x0avarstr=“这里是div里面的段落”\x0d\x0a//\x0d\x0a\x0d\x0avarreg=//gi\x0d\x0avarstr=“这里是div
里面的段落”\x0d\x0aalert(str.replace(reg,”"))\x0d\x0a\x0d\x0a3、完成foo()函数的内容,要求能够弹出对话框提示当前选中的是第几个单选框。(10分)\x0d\x0a\x0d\x0a
\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0afunctionfoo(){\x0d\x0a//在此处添加代码\x0d\x0avarrdo=document.form1.radioGroup\x0d\x0afor(vari=0i\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a4、完成函数showImg(),要求能够动态根据下拉列表的选项变化,更新图片的显示(15分)\x0d\x0a\x0d\x0a\x0d\x0afunctionshowImg(oSel){\x0d\x0a//在此处添加代码\x0d\x0avarstr=oSel.value\x0d\x0adocument.getElementById(“pic”).src=str+”.jpg”\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a城市生活\x0d\x0a都市早报\x0d\x0a青山绿水\x0d\x0a
回答于 2022-12-14JavaScript面试题:字符串处理在应聘前端程序员时,在笔试部分经常会考到字符串处理的问题。这些题有一个特点,站在考官的角度去考虑,它考的不是你会不会,而是你能不能在不借用XX手册或者XX指南再或者百度谷歌的情况下,用比较简洁的方式写出答案来。就具体的字符串处理问题,郑州尚学堂给大家分享一下。
1、字符串转换
字符串转换是最基础的要求和工作,你可以将任何类型的数据都转换为字符串,你可以用下面三种方法的任何一种:
var num= 19// 19
var myStr = num.toString()// "19"
你同样可以这么做:
var num= 19// 19
var myStr = String(num)// "19"
或者,再简单点儿:
var num= 19// 19
var myStr = "" +num// "19"
2、字符串分割
字符串分割,即将一个字符串分割为多个字符串,JavaScript中给我们提供了一个非常方便的函数,如:
var myStr = "I,Love,You,Do,you,love,me"
var substrArray = myStr .split(",")// ["I", "Love", "You", "Do", "you", "love", "me"]
var arrayLimited = myStr .split(",", 3)// ["I", "Love", "You"]
split()的第二个参数,表示返回的字符串数组的最大长度。
3、获取字符串长度
字符串长度是在开发中经常要用到的,非常简单如下:
var myStr = "I,Love,You,Do,you,love,me"
var myStrLength = myStr.length//25
4、查询子字符串
很多人都会忘记这几个JavaScript的自带的方法,或者忘记它们的具体用法,从而导致在做题的时候不得不嵌套for循环来做。
第一个函数:indexOf(),它从字符串的开头开始查找,找到返回对应坐标,找不到返回-1,如下:
var myStr = "I,Love,you,Do,you,love,me"
var index = myStr.indexOf("you")// 7 ,基于0开始,找不到返回-1
第二个函数:lastIndexOf(),它从字符串的末尾开始查找,找到返回对应坐标,找不到返回-1,如下:
var myStr = "I,Love,you,Do,you,love,me"
var index = myStr.lastIndexOf("you")// 14
以上两个函数同样接收第二个可选的参数,表示开始查找的位置。
5、字符串替换
单单查到字符串应该还不会停止,一般题目都还经常会遇到让你查到并替换为你自己的字符串,例如:
var myStr = "I,love,you,Do,you,love,me"
var replacedStr = myStr.replace("love","hate")//"I,hate,you,Do,you,love,me"
默认只替换第一次查找到的,想要全局替换,需要置上正则全局标识,如:
var myStr = "I,love,you,Do,you,love,me"
var replacedStr = myStr.replace(/love/g,"hate")//"I,hate,you,Do,you,hate,me"
6、查找给定位置的字符或其字符编码值
想要查找给定位置的字符,你可以使用如下函数:
var myStr = "I,love,you,Do,you,love,me"
var theChar = myStr.charAt(8)// "o",同样从0开始
同样,它的一个兄弟函数就是查找对应位置的字符编码值,如:
var myStr = "I,love,you,Do,you,love,me"
var theChar = myStr.charCodeAt(8)//111
7、字符串连接
字符串连接操作可以简单到用一个加法运算符搞定,如:
var str1 = "I,love,you!"
var str2 = "Do,you,love,me?"
var str = str1 + str2 + "Yes!"//"I,love,you!Do,you,love,me?Yes!"
同样,JavaScript也自带了相关的函数,如:
var str1 = "I,love,you!"
var str2 = "Do,you,love,me?"
var str = str1.concat(str2)//"I,love,you!Do,you,love,me?"
其中concat()函数可以有多个参数,传递多个字符串,拼接多个字符串。
8、字符串切割和提取
有三种可以从字符串中抽取和切割的方法,如:
第一种,使用slice():
var myStr = "I,love,you,Do,you,love,me"
var subStr = myStr.slice(1,5)//",lov"
第二种,使用substring():
var myStr = "I,love,you,Do,you,love,me"
var subStr = myStr.substring(1,5)//",lov"
第三种,使用substr():
var myStr = "I,love,you,Do,you,love,me"
var subStr = myStr.substr(1,5)//",love"
与第一种和第二种不同的是,substr()第二个参数代表截取的字符串最大长度,如上结果所示。
9、字符串大小写转换
常用的转换为大写或者小写字符串函数,如下:
var myStr = "I,love,you,Do,you,love,me"
var lowCaseStr = myStr.toLowerCase()//"i,love,you,do,you,love,me"
var upCaseStr = myStr.toUpperCase()//"I,LOVE,YOU,DO,YOU,LOVE,ME"
10、字符串匹配
字符串匹配可能需要你对正则表达式有一定的了解,先来看看match()函数:
var myStr = "I,love,you,Do,you,love,me"
var pattern = /love/
var result = myStr.match(pattern)//["love"]
console.log(result .index)//2
console.log(result.input )//I,love,you,Do,you,love,me
如你所见,match()函数在字符串上调用,并且接受一个正则的参数。来看看第二个例子,使用exec()函数:
var myStr = "I,love,you,Do,you,love,me"
var pattern = /love/