大约 2 分钟
面试题
1、document.querySelector() 和 document.getelement...by...()的区别
一般说的都是getElement(s)Byxxxx获取的是动态集合,querySelector获取的是静态集合
<body>
<ul id="box">
<li class="a">测试1</li>
<li class="a">测试2</li>
<li class="a">测试3</li>
</ul>
</body>
<script type="text/javascript">
//获取到ul,为了之后动态的添加li
var ul = document.getElementById('box');
//获取到现有ul里面的li
var list = ul.getElementsByTagName('li');
for(var i =0;i<list.length;i++){
ul.appendChild(document.createElement('li')); //动态追加li
}
</script>
静态集合体现在.querySelectorAll(‘li’)获取到ul里所有li后,不管后续再动态添加了多少li,都是不会对其参数影响。
2、“ “ ' ' 和``他们之间有什么区别,字符一般用那种为什么?
"" ''和其他语言不同,javascript 的字符串不区分单引号和双引号,所以不论是单引号还是双引号的字符串,上面的转义字符都能运行 。来自----MDN
3、var a = 10 和 a = 10的区别
由于变量声明自带不可删除属性,比较var num = 1 跟 num = 1,前者是变量声明,带不可删除属性,因此无法被删除;后者为全局变量的一个属性,因此可以从全局变量中删除。
4、面向过程和面向对象的区别
面向过程:(顺序、选择、循环)所有事情按步骤依次执行
面向对象:(封装、继承、多态)指定其有某个功能的“人“,全权交给那个”人“负责,只验收结果
5、对象利用”.“出来和”[]"访问,他们有什么区别?
6、为什么字符串可以作为数据传输的标准给是,而其他的数据类型不行?
7、在完整执行上下文过程中,创建执行上下文是在执行函数之前,而这个之前是怎么触发的,是马上运行函数的时候触发的,还是在进行函数声明的时候触发的?
8、在完整执行上下文过程中,每个执行上下文都有,一个作用域链,它是怎么指向的?
9、arguement 是什么
arguments 是一个经典的类数组对象,我们可以通过上述的 Function.call 或者 Function.apply 方法来间接调用数组的方法,也可以直接通过 Array.prototype.slice 或 Array.prototype.splice 等方法把类数组对象转换成真正的数组。
console.log(Array.prototype.slice.call(arguments,0));
console.log();
console.log(Array.prototype.slice.call(arguments))
var args2 =[].slice.call(arguments);
console.log(args2);
1、arguments是一个类数组对象,用来存储实参;具有length、callee等属性;可以用arguments[0]这个形式访问实参;可以转换为真实数组。
2、arguments和函数相关联,其只有在函数执行时可用,不能显式创建。
3、arguments可以用来遍历参数;通过callee实现递归;也可以模拟函数重载。
链接:https://juejin.cn/post/6844903711022514184