javascript面试题总结(四)

看下列代码,输出什么?解释原因。

var undefined;
undefined == null; // true
1 == true; // true
2 == true; // false
0 == false; // true
0 == ''; // true
NaN == NaN; // false
[] == false; // true
[] == ![]; // true
var a={};
var b=[];
console.log(Boolean(a));//true
console.log(Boolean(b));//true
  • undefined 与null 相等,但不恒等(===)
  • 一个是number 一个是string 时,会尝试将string 转换为number
  • 尝试将boolean 转换为number,0 或1
  • 尝试将Object 转换成number 或string,取决于另外一个对比量的类型
  • 因为任何对象Boolean值都为true,所以![]就为false
    所以,对于0、空字符串的判断,建议使用“===” 。“===”会先判断两边的值类型,类型不匹配时为false。

为了保证页面输出安全,我们经常需要对一些特殊的字符进行转义,请写一个函数escapeHtml,将<, >, &, “进行转义

function escapeHtml(str) {
    return str.replace(/[<>”&]/g, function(match) {
        switch (match) {
        case “<”:
            return “&lt;”;
        case “>”:
            return “&gt;”;
        case “&”:
            return “&amp;”;
        case “\””:
            return “&quot;”;
        }
    });
}

foo = foo||bar ,这行代码是什么意思?为什么要这样写?

答案:if(!foo) foo = bar; //如果foo 存在,值不变,否则把bar 的值赋给foo。
短路表达式:作为”&&”和”||”操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程便告终止,这称之为短路求值。

怎样添加、移除、移动、复制、创建和查找节点(原生JS,实在基础,没细写每一步)

1)创建新节点
createDocumentFragment() //创建一个DOM 片段
createElement() //创建一个具体的元素
createTextNode() //创建一个文本节点
2)添加、移除、替换、插入
appendChild() //添加
removeChild() //移除
replaceChild() //替换
insertBefore() //插入
3)查找
getElementsByTagName() //通过标签名称
getElementsByName() //通过元素的Name 属性的值
getElementById() //通过元素Id,唯一性

分析代码,得出正确的结果。

var a=10, b=20 , c=30;
++a;//11
a++;//12
e=++a+(++b)+(c++)+a++;//12 21 30-31 12-13
console.log(e);

弹出提示对话框:77

将页面的状态栏中显示“已经选中该文本框”,下列JavaScript 语句正确的是(A)

A. window.status=”已经选中该文本框”
B. document.status=”已经选中该文本框”
C. window.screen=”已经选中该文本框”
D. document.screen=”已经选中该文本框”

阅读以下代码,请分析出结果:

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

猜你喜欢

转载自blog.csdn.net/mangxi8200/article/details/81182433
今日推荐