1. 下面哪些语句可以 在JS里判断一个对象oStringObject是否为String。
- oStringObject instanceof String
- typeof oStringObject == ‘string’
- oStringObject is String
- 以上答案都不正确
解释:
JS 中值的类型分为原始值类型和对象类型。原始值类型包括 number, string, boolean, null 和 undefined;对象类型即 object。首先原始值类型它就不是对象。
另外,要注意 ‘hello’ 和 new String(‘hello’) 的区别,前者是字符串字面值,属于原始类型,而后者是对象。用 typeof 运算符返回的值也是完全不一样的:
typeof 'hello'; // 'string'
typeof new String('hello'); // 'object'
之所以很多人分不清字符串字面值和 String 对象,归根结底就是 JS 的语法对你们太过纵容了。当执行 ‘hello’.length 时,发现可以意料之中的返回 5,你们就觉得 ‘hello’ 就是 String 对象,不然它怎么会有 String 对象的属性。其实,这是由于 JS 在执行到这条语句的时候,内部将 ‘hello’ 包装成了一个 String 对象,执行完后,再把这个对象丢弃了,这种语法叫做 “装箱”,在其他面向对象语言里也有(如 C#)。不要认为 JS 帮你装箱了,你就可以在写代码的时候不分箱里箱外了!
2.下面属于javascript基本数据类型的有?
- 字符串
- 数字
- null
- undefined
解释:
js七种数据类型:Sting Object null undefined Array Boolean Number
js五种基本类型:String Boolean Number null undefined
typeof六种返回格式:‘string’ ‘number’ ‘object’ ‘function’ ‘boolean’ ‘undefined’
3. 有关this指针
有如下JavaScript程序:
var Test= {
foo: "test",
func: function() {
var self = this;
console.log(this.foo);
console.log(self.foo);
(function() {
console.log(this.foo);
console.log(self.foo);
}());
}
};
Test.func();
会输出什么?
答案:test<br>test<br>undefined<br>test
解释:
this指针指向其调用者,所以在执行Test.func()之后,func()的调用者是Test这个对象,所以func内部的this指的就是Test对象,这样的话前两个输出都是“test”。需要注意的是,self作为一个变量,把this指针的指向者(Test对象)保存了下来。内部的函数闭包在执行的时候没有调用者,则this指向window对象,输出“undefined”。self.foo访问闭包函数外部的self变量,也就是test对象,输出“test”.
4. 关于form
关于form标签的说法,下列错误的是?(D)
A: <form> 标签用于为用户输入创建 HTML 表单
B: 数据通过设置的action属性提交到指定的位置
C: <form>标签目前只支持GET和POST请求,且默认为GET
D: <form>标签的enctype属性值默认为multipart/form-data
解释:
enctype属性的值有四个:
application/x-www-form-urlencoded:在发送前编码所有字符(默认)
multipart/form-data:不对字符编码。在使用包含文件上传控件的表单时,必须使用该值。
text/plain:空格转换为 “+” 加号,但不对特殊字符编码。
application/json:json格式的数据
5.
如果想在bash中,把标准输入流重定向到标准错误输出流,应该加下面那条命令?
答案:0>&2
补充:
HTML的<>&"©分别是<,>,&,",©;的转义字符
6. 下面哪个算法对单链表排序最快?
答案:快速排序
7. 图
图G的邻接矩阵表达如下,那么G的顶点数和边数为:
0 0 1 1 1
0 0 1 1 0
1 1 0 1 0
1 1 1 0 1
1 0 0 1 0
答案: 5,7
8. 编程题
页面中存在id=jsContainer的DOM元素。
该DOM元素内会给出一段随机文本,可能包含一些链接,比如https://www.baidu.com,或者 www.baidu.com?from=onlineExam,如果出现链接文本,请给该链接文本加上链接标签,用户点击后能直接在新窗口中打开该链接。
请完成 link 函数,完成该功能
1、container只有纯文本内容,不包含其他dom元素
2、识别所有以http://、https://或者www.开始的链接
3、所有www.开头的链接,默认使用 http 协议
4、所有链接在新窗口打开
代码实现:这个通过率目前只有60%,还需要调试!!!
<!DOCTYPE html>
<html>
<head>
<title>
</title>
<style type="text/css">
a {
color: #00bc9b;
}
</style>
</head>
<body>
<div id="jsContainer">
这里会给出一段随机文本,可能包含一些链接,比如https://www.baidu.com,或者 www.baidu.com?from=onlineExam,如果出现链接文本,请给该链接文本加上链接标签,用户点击后能直接在新窗口中打开该链接。
</div>
</body>
<script type="text/javascript">
function link() {
var obj = document.getElementById('jsContainer')
var container = obj.innerHTML
// console.log(container)
var reg = /(http:\/\/|https:\/\/)?www.[-A-Za-z0-9+&@#/%?~=_|!:,.;]+/g
// var res = null
// while((res=reg.exec(container))!==null){
// console.log(res[0])
// }
// var res = reg.exec(container)
// console.log(res)
var result = container.replace(reg, function (text) {
console.log(text)
console.log('aaaa')
if(/^www./.test(text)){
text = 'http://'+text
}
return '<a target="_blank" href='+text+'>'+text+'</a>';
})
obj.innerHTML = result
}
link()
</script>
</html>