基础面试题整理2

  1. 以下 javascript 代码,在浏览器中运行的结果是 (string)

    var a = 4399 < 0 || typeof (4399 + '');
    console.log(a);   //string
    

    4399<0值为false
    (js中字符串的前面或者后面有加号)拼接 4399+ ‘’ => 4399 隐式转换成字符串
    第一个值为true,则结果为true,第一个值为false,则返回第二个值

  2. 获取 input 节点的正确方法是( 全错 )

    <form class="file" name="upload">
    	<input id="file" name="file" />
    </form>
    
    document.querySelectorAll('file')[0]-------document.querySelectorAll('#file')[0]
    document.getElementById('file')[0]------document.getElementById('file')
    document.getElementByTagName('file')[0]------document.getElementsByTagName('input')[0]
    document.getElementsByClassName(‘file')[0]------input没有class属性
    
  3. console.log(([])?true:false); //true
    console.log(([]==false?true:false)); //true
    console.log(({}==false)?true:false)  //false
    
    1. 三目运算符(只能执行一条语句,不能出现分号):
      格式:条件 ? 语句1 : 语句2; 如果条件为真,则执行语句1,否则执行语句2;
    // 1判断一个年份是闰年还是平年?
       var year = 2015;
       console.log(year % 4 == 0 && year % 100 == 0 || year % 400 == 0 ? '闰年' : '平年');//平年
    // 2判断一个数是奇数还是偶数?
       var inum = 5;
       console.log(inum % 2 == 0 ? '奇数' : '偶数');//偶数
    // 3判断一个数是正数还是负数?
       var inum = -5;
       console.log(inum == 0 ? '既不是正数也不是负数' : inum > 0 ? '正数' : '负数');//负数
    
    1. 数据类型的转换与比较
    console.log(Boolean([]));//true
    console.log(Number([]));//0
    console.log(Number({}));// NaN
    console.log(Number(false));//0
    
  4. 假设 output 是一个函数,输出一行文本。下面的语句输出结果是什么?

    output(typeof (function() {output(“Hello World!)})());
    undefined Hello World!
    Object
    string
    function
    Hello World! undefined    √
    

    先立即执行匿名函数,输出Hello World!,函数执行后无返回值,则输出undefined

  5. null、undefined、0会返回false

  6. 自己定义 或 运算过程中出现错误,原本应该是数字的地方出现一些不能转换为数字的值会返回NAN
    比如: 10+“s” ,Number(“s”)等

  7. 类型转换:
    用number方法将字符串转为number类型时,只能转换纯数字字符串和空字符串,其它的都是NAN。

    parseInt转换为整数、parseFloat可保留小数,都可转为number类型,但是转换时需要对数据进行数据解析,从前往后,若存在能识别得数字则解析,遇不到就结束转换返回NAN。

    isNaN 是不是 不是数字,返回boolean值,是返回true,不是false。

    隐式:在数据进行算术运算时,出现+运算,+ - * / 等操作都转化为number类型。
    加法运算在遇到字符串时,‘+’会变成连接符,将字符串前后拼接起来,转化为string值。

    1. 强制类型转换 :
      Number(“10”); 强转为Number
      parseInt(“10.5”);强转为number,取整
      parseFloat(“10.5”);强转为number,保留小数 String(10); 强转为字符串
      10.toString(); 强转为字符串
    2. 隐式类型转换:
      “10”+20 ; 1020 +号遇到字符串变成连接符,20隐式转换为字符串
      1+true; 2 true隐式转换为1 10==“10” “10”隐式转换为10
  8. 变量提升
    浏览器解析js代码至少会经过两个过程,预解析、逐步执行。
    预解析:找var,function,如果找到var,会在内存中存储变量(没赋值),找到function则会存储整个函数
    逐步执行

    console.log(a);  //undefined 不会报错,找到var存储了变量a,但是没有赋值默认为undefined 
    var a = 10;   //给内存中的a赋值10
    console.log(a);   //10
    
    console.log(sum);  //找到函数会将整个函数都存储在内存中 		
    sum();  //整个函数,存储了整个函数,因此可以在前面调用 
    function sum() {
    	console.log(10+20); //30
    }
    
  9. js有哪些对象?
    原生对象:Object,Function ,Array, String, Date, Boolean, Number,RegExp,Error
    内置对象:Global(全局 window, documet),Math
    宿主对象:DOM BOM
    全局对象:window

  10. DOM怎样添加、移除、移动、复制、创建和查找节点
    获取子节点:父节点.children / 父节点.childNodes
    获取父节点:子节点.parentNode / 子节点.offsetParent
    创建:document.createElement(‘标签名’); / document.createTextNode(‘文本内容’);
    添加:父节点.appendChild(子节点); / 父节点.insertBefore(new,ref);
    复制:被复制的节点.cloneNode(true);
    删除:节点.remove(); / 父节点.removeChild(子节点)
    替换:父节点.replaceChild(new,ref);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值