概述
为什么导出方式会有两种?export default 和 export 区别是什么
1.export与export default均可用于导出常量、函数、文件、模块等
2.在一个文件或模块中,export、import可以有多个,export default仅有一个
3.通过export方式导出,在导入时要加{ },export default则不需要
4.
(1) 输出单个值,使用export default
(2) 输出多个值,使用export 【注意:引入时要加花括号 import { A } from " B" 】解构引入
(3) export default与普通的export不要同时使用
示例:
1.export
//a.js
export const str = “blablabla~”;
export function log(sth) {
return sth;
}
对应的导入方式:
//b.js
import { str, log } from ‘a’; //也可以分开写两次,导入的时候带花括号
2.export default
//a.js
const str = “blablabla~”;
export default str;
其实此处相当于为str变量值"
"起了一个系统默认的变量名default,自然default只能有一个值,所以一个文件内不能有多个export default。
对应的导入方式: //b.js import str from ‘a’; //导入的时候没有花括号
本质上,a.js文件的export default输出一个叫做default的变量,然后系统允许你为它取任意名字。所以可以为import的模块起任何变量名,且不需要用大括号包含
import的文件会自动执行一次。
import会加载且仅加载一次导入的模块
ES6模块化与commonjs、amd区别:
ES6 模块的设计思想是尽量的静态化,使得编译时就能确定模块的依赖关系,以及输入和输出的变量。CommonJS 和 AMD 模块,都只能在运行时确定这些东西。
正则表达式构造函数var reg=new RegExp(“xxx”)与正则表达字面量var reg=//有什么不同?匹配邮箱的正则表达式?
答案:当使用RegExp()构造函数的时候,不仅需要转义引号(即"表示"),而且还需要双反斜杠(即 表示一个)。使用正则表达字面量的效率更高。
邮箱的正则匹配:
var regMail = /^([a-zA-Z0-9_ -])+@([a-zA-Z0-9_ -])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/;
JavaScript中,以下哪条语句一定会产生运行错误?
A、var_变量=NaN
B、var 0bj = [ ] ;
C、var obj = //;
D、var obj ={};
答案(B)
以下两个变量a和b,a+b的哪个结果是NaN?
A、var a=undefind; b=NaN
B、var a=‘123’; b=NaN
C、var a =undefined , b =NaN
D、var a=NaN , b=’undefined‘
答案(C)
var a=10; b=20; c=4; ++b+c+a++ 以下哪个结果是正确的?
A、34
B、35
C、36
D、37
答案(B)
下面的JavaScript语句中,( D )实现检索当前页面中的表单元素中的所有文本框,并将它们全部清空
A. for(vari=0;i< form1.elements.length;i++) {
if(form1.elements.type==”text”)
form1.elements.value=”";}
B. for(vari=0;i<document.forms.length;i++) {
if(forms[0].elements.type==”text”)
forms[0].elements.value=”";}
C. if(document.form.elements.type==”text”)
form.elements.value=”";
D. for(vari=0;i<document.forms.length; i++){
for(var j=0;j<document.forms.elements.length; j++){
if(document.forms.elements[j].type==”text”)
document.forms.elements[j].value=”";
}
}
以下哪条语句会产生运行错误:(A)
A.var obj = ();
B.var obj = [];
C.var obj = {};
D.var obj = //;
以下哪个单词不属于javascript保留字:(B)
A.with
B.parent
C.class
D.void
请选择结果为真的表达式:(C)
A.null instanceof Object
B.null === undefined
C.null == undefined
D.NaN == NaN
阅读以下代码,请分析出结果:
var arr = new Array(1 ,3 ,5);
arr[4]='z';
arr2 = arr.reverse();
arr3 = arr.concat(arr2);
alert(arr3);
弹出提示对话框:z,5,3,1,z,5,3,1
补充按钮事件的函数,确认用户是否退出当前页面,确认之后关闭窗口; < html >
<head>
<script
type=”text/javascript” >
function closeWin(){
//在此处添加代码
if(confirm(“确定要退出吗?”)){
window.close();
}
}
</script>
</head>
<body>
<input type=”button”value=”关闭窗口”onclick=”closeWin()”/>
</body>
</html>
完成foo()函数的内容,要求能够弹出对话框提示当前选中的是第几个单选框。
<html>
<head>
<metahttp-equiv=”Content-Type” content=”text/html;charset=utf-8″ />
</head>
<body>
<script
type=”text/javascript” >
function foo() {
//在此处添加代码
var rdo =document.form1.radioGroup;
for(var i =0 ;i<rdo.length;i++){
if(rdo.checked){
alert(“您选择的是第”+(i+1)+”个单选框”);
}
}
}
</script>
<body>
<form name="form1″ >
<input type="radio" name="radioGroup"/>
<input type="radio" name="radioGroup"/>
<input type="radio" name="radioGroup"/>
<input type="radio" name="radioGroup"/>
<input type="submit"/>
</form>
</body>
</html>
完成函数showImg(),要求能够动态根据下拉列表的选项变化,更新图片的显示
<body>
<script
type=”text/javascript” >
function showImg (oSel) {
//在此处添加代码
var str = oSel.value;
document.getElementById(“pic”).src= str+”.jpg”;
}
</script>
<img
id=”pic”src=”img1.jpg”width=”200″ height=”200″ />
<br />
<select id="sel">
<option value="img1">城市生活</option>
<option value="img2">都市早报</option>
<option value="img3">青山绿水</option>
</select></body>
截取字符串abcdefg的efg
alert(‘abcdefg’.substring(4));
列举浏览器对象模型BOM里常用的至少4个对象,并列举window对象的常用方法至少5个
对象:Window document location screen history navigator
方法:Alert() confirm() prompt() open() close()
简述列举文档对象模型DOM里document的常用的查找访问节点的方法并做简单说明
Document.getElementById 根据元素id查找元素
Document.getElementByName 根据元素name查找元素
Document.getElementTagName 根据指定的元素名查找元素
简述创建函数的几种方式
第一种(函数声明):
function sum1(num1,num2){
return num1+num2;
}
第二种(函数表达式):
var sum2 = function(num1,num2){
return num1+num2;
}
第三种(函数对象方式):
var sum3 = new Function("num1","num2","return num1+num2");
Javascript如何实现继承?
原型链继承,借用构造函数继承,组合继承,寄生式继承,寄生组合继承
iframe的优缺点?
优点:
-
解决加载缓慢的第三方内容如图标和广告等的加载问题
-
Security sandbox
-
并行加载脚本
缺点:
-
iframe会阻塞主页面的Onload事件
-
即时内容为空,加载也需要时间
-
没有语意
请你谈谈Cookie的弊端?
缺点:
1.Cookie
数量和长度的限制。每个domain最多只能有20条cookie,每个cookie长度不能超过4KB,否则会被截掉。
2.安全性问题。如果cookie被人拦截了,那人就可以取得所有的session信息。即使加密也与事无补,因为拦截者并不需要知道cookie的意义,他只要原样转发cookie就可以达到目的了。
有些状态不可能保存在客户端。例如,为了防止重复提交表单,我们需要在服务器端保存一个计数器。如果我们把这个计数器保存在客户端,那么它起不到任何作用。
DOM操作——怎样添加、移除、移动、复制、创建和查找节点。
- 创建新节点
createDocumentFragment() // 创建一个DOM片段
createElement() // 创建一个具体的元素
createTextNode() // 创建一个文本节点
- 添加、移除、替换、插入
appendChild()
removeChild()
replaceChild()
insertBefore() // 在已有的子节点前插入一个新的子节点
- 查找
getElementsByTagName() // 通过标签名称
getElementsByName() // 通过元素的Name属性的值(IE容错能力较强,会得到一个数组,其中包括id等于name值的)
getElementById() // 通过元素Id,唯一性
判断一个字符串中出现次数最多的字符,统计这个次数
答:
var str = 'asdfssaaasasasasaa';
var json = {};
for (var i = 0; i < str.length; i++) {
if(!json[str.charAt(i)]){
json[str.charAt(i)] = 1;
}else{
json[str.charAt(i)]++;
}
};
var iMax = 0;
var iIndex = '';
for(var i in json){
if(json[i]>iMax){
iMax = json[i];
iIndex = i;
}
}
alert(‘出现次数最多的是:’+iIndex+‘出现’+iMax+‘次’);
解释jsonp的原理,以及为什么不是真正的ajax
动态创建script标签,回调函数
Ajax是页面无刷新请求数据操作
document load 和document ready的区别
Document.onload 是在结构和样式加载完才执行js
Document.ready原生种没有这个方法,jquery中有 $().ready(function)
将数字 12345678 转化成 RMB形式 如: 12,345,678
//个人方法;
//思路:先将数字转为字符, str= str + ‘’ ;
//利用反转函数,每三位字符加一个 ','最后一位不加; re()是自定义的反转函数,最后再反转回去
for(var i = 1; i <= re(str).length; i++){
tmp += re(str)[i - 1];
if(i % 3 == 0 && i != re(str).length){
tmp += ',';
}
}
window.location.search() 返回的是什么?
答:查询(参数)部分。除了给动态语言赋值以外,我们同样可以给静态页面,并使用javascript来获得相信应的参数值
返回值:?ver=1.0&id=timlq 也就是问号后面的!
window.location.hash 返回的是什么?
答:锚点 , 返回值:#love ;
阻止冒泡函数
function stopPropagation(e) {
e = e || window.event;
if(e.stopPropagation) { //W3C阻止冒泡方法
e.stopPropagation();
} else {
e.cancelBubble = true; //IE阻止冒泡方法
}
}
document.getElementById('need_hide').onclick = function(e) {
stopPropagation(e);
}
什么是闭包?写一个简单的闭包?
答:我的理解是,闭包就是能够读取其他函数内部变量的函数。在本质上,闭包就是将函数内部和函数外部链接起来的一座桥梁。
function outer(){
var num = 1;
function inner(){
var n = 2;
alert(n + num);
}
return inner;
}
outer()();
最后
以上就是勤恳斑马为你收集整理的面试题笔记的全部内容,希望文章能够帮你解决面试题笔记所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复