【JavaScript】面试可能会考到
null 和undefined 的区别?
null 是一个表示"无"的对象,转为数值时为0;undefined 是一个表示"无"的原始值,转为数值时为NaN。
当声明的变量还未被初始化时,变量的默认值为undefined。
null 用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。
undefined 表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是:
(1)变量被声明了,但没有赋值时,就等于undefined。
(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
(3)对象没有赋值的属性,该属性的值为undefined。
(4)函数没有返回值时,默认返回undefined。
null 表示"没有对象",即该处不应该有值。典型用法是:
(1) 作为函数的参数,表示该函数的参数不是对象。
(2) 作为对象原型链的终点。
原生JS 的window.onload 与Jquery 的$(document).ready(function(){})有什么不同?
window.onload()方法是必须等到页面内包括图片的所有元素加载完毕后才能执行。
$(document).ready()是DOM 结构绘制完毕后就执行,不必等到加载完毕。
算法题:使用原生js 编写冒泡排序算法。
<script>
var array = [5, 4, 3, 2, 1];
var temp = 0;
for (var i = 0; i < array.length; i++) {
for (var j = 0; j < array.length - i; j++) {
if (array[j] > array[j + 1]) {
temp = array[j + 1];
array[j + 1] = array[j];
array[j] = temp;
}
}
}
</script>
分析:
所谓冒泡排序法,就是将相邻的元素依次进行比较,如果前面的元素比后面的元素值大,就交换它们的值。这样
每一轮排序下来,最大的元素会被交换到数组的最后一个位置。这样一轮一轮比较和交换,就像冒泡一样。