![js 面试题 js 面试题](https://image.shishitao.com:8440/aHR0cHM6Ly9ia3FzaW1nLmlrYWZhbi5jb20vdXBsb2FkL2NoYXRncHQtcy5wbmc%2FIQ%3D%3D.png?!?w=700&webp=1)
1.用原生js,创建一个无序列表添加到body中,ul下包含5个li,每个li包含一个text类型元素,text元素内容可自定义;
<script type="text/javascript">
window.onload = function() {
var ulNode = document.createElement("ul");
var bodyNode = document.getElementsByTagName("body");
bodyNode[0].appendChild(ulNode);
for (var i = 0; i < 5; i++) {
var liNode = document.createElement("li");
var textNode = document.createTextNode("我是文本节点"+i);
liNode.appendChild(textNode);
ulNode.appendChild(liNode);
}
}
</script>
运行结果:
知识点:
(1)在原生js中,window.onload 当页面加载的时候可以调用某些函数(http://www.jb51.net/article/43166.htm)
window.onload = function() {
...
}
(2)创建新的节点:
document.createElement("div");// 定义新的div元素节点变量
(3)创建文本节点
document.createTextNode() ;//可创建文本节点
(4)向节点添加最后一个子节点
appendChild()
2.
(function(){
return typeof arguments;
})();
参考答案:
arguments是对象,伪数组有两件事要注意这里:
参数不是数组,它是一个数组一样的物体,你可以使用方括号和整数索引的元素,但方法通常可在一个如推上不存在参数数组
Array.prototype.slice.call(arguments); 转成数组
当然arguments即使是数组,返回的依然是"object",因为数组也是对象,附加:typeof 对类型的判断
https://developer.mozilla.org/zh-CN/docs/JavaScript/Reference/Operators/typeof // "object"
3.
var f = function g(){ return 23; };
typeof g();
参考答案:
function g(){ return 23; }是函数表达式,事实上只是一个名字,不是一个函数声明
函数实际上是绑定到变量f,不是g.
指定的标识符在函数表达式虽然有其用途:堆栈跟踪是清晰而不是充斥着无名的函数,你可以有一个匿名函数递归调用本身不使用argument.callee
附非常详细的帖子函数表达式
http://kangax.github.io/nfe/ //会发生错误