注:写结果的时候注意数据类型,字符串包上引号,例如:2为数字2;’2’为字符串2,如果数据类型不对,也为错。

一、基础知识问答 (12分)

01、JS的组成部分(2分)
ECMAScript规范
DOM
BOM
02、JS中的数据类型都有哪些?以及两大类之间的区别?(4分)
原始值类型 string number boolean null undefined bigint symbol
对象类型
标准普通对象 Object
标准特殊对象 数组 Array 正则 Math(数学方法) 错误(Error)
非标准特殊对象 String Number Boolean BigInt Symbol
可执行/或可调用对象 function
03、检测数据类型的四种方式?(常见面试题)(2分)
typeof
instanceof
constructor
Object.prototype.toString.call()
04、JS中创建变量的几种常用方式?(2分)
1.var
2.let
3.const
4.function
5.class
6.import

05、常用浏览器的内核都有哪些?(常见面试题)(2分)
Trident IE浏览器
Gecko 火狐
webkit 谷歌/苹果
Blink [Microft Edge]
Presto 欧朋

二、基础编程 (56分)

01、写出下面程序的输出结果(腾讯面试题)(2分)

  1. let num = parseFloat('width:100px');
  2. if(num == 100){
  3. alert(1);
  4. }else if(num == NaN){
  5. alert(2);
  6. }else if(typeof num == 'number'){
  7. alert(3);
  8. }else{
  9. alert(4);
  10. }
  11. //弹框alert(3)

02、写出下面程序输出几次,结果分别是多少?(腾讯面试题)(2分)

for(var i=0;i<10;i+=2){
    if(i<=5){
        i++;
        continue;
    }else{
        i+=3;
        break;
    }
    alert(i);
}
//i是数字9 alert把数字9转成了字符串9再输出
alert(i);
//1次 结果“9”

03、写出下面代码的输出结果?(腾讯面试题)(4分)

var result1 = 1+null+true+undefined+'Tencent'+false+[]+undefined+null;
//1+0+NaN=>NaN+'Tencent' 接下来都是字符串拼接 "NaNTencentfalseundefinednull"
var result2 = 9+6+{}+true+1+[];
console.log(result1);//"NaNTencentfalseundefinednull"
console.log(result2);//"15[object Object]true1"

04、写出下面代码的输出结果?(4分)

A:3-'1px'?alert(2):alert(3);//alert(3) 字符串"3"
B:3+'1px'?alert(4):alert(5);//alert(4) 字符串"4"

//改写if
if(3-'1px'){
      alert(2);
 }else{
   alert(3);
}

if(3+'1px'){
   alert(4);
}else{
   alert(5);
}

05、(4分)

<body>
   <div id='box' class='box'></div>
   <script>
       //=>在JS中获取这个元素对象(一个元素对象,不是元素集合),你有哪些办法可以实现?
   </script>
</body>

//document.getElementById("box");
//document.getElementsByClassName("box")[0];
//document.getElementsByTagName("div")[0];

06、分析下面的代码,写出运行的结果(百度面试题)(6分)

let a = NaN;
let b = a;
b = 13;
console.log(a);  //NaN
let a = {n: 'n'};
let b = a;
b['n'] = 6;
console.log(a.n); //6
let a = {n:'bili'};
let b = a;
b = {n:13};
console.log(a.n);//"bili"

07、写出下面代码运行的结果 (阿里面试题)(4分)

let a = {
    n: 10
};
let b = a;
b.m = b = {
    n: +'6'
};
console.log(a);{n:10,m{n:6}}
console.log(b);{n:6}

08、写出下面代码的结果(4分)

let i=1;
console.log(1-(++i)+(i--)+1+(i++)-(--i)-1); //1
console.log(i);//1

09、写出下面代码的结果(12分)

A:parseInt("") + Number("");//NaN

B:!!"parseInt(NaN)"; //true

C:!typeof typeof typeof [12,23]; //false

D:parseFloat("1.6px") + parseInt("1.2px"); //2.6

E:typeof "parseInt(undefined)" + 12 + !!Number('');//"string12false"

F:[] == false;//true

10、下面代码会输出什么?(1分)

function b(){
  var b = 20;
  console.log(b);
}
//不输出 因为没有执行

11、下面代码会输出什么?(2分)

if (!![] == false) {
  console.log('1');
}else if ([] == 0) {
  console.log('2');
}else if(({}) = = NaN) {
    console.log(3);
}
//console.log('2');
parseInt(undefined) == Number(undefined)?(
  parseInt(null) == Number(null)?alert(1):alert(2)
):alert(3);
//alert()3

12、下面代码会输出什么?(3分)

A:parseInt('034', 0);//34

B:parseFloat(1.5, 6);//1.5

C:parseInt(056);//5*8^1+6*8^0=46

二、综合实战案例 (32分)

1、请操作下面的元素,在原有width基础上增加20px。(6分)

<div id='inner' class='little'></div>

//第一种
 var box=document.getElementById("inner");
 // 有一种特殊情况,在元素没有width值 box.style.width是空字符串,不能直接用ParseFloat处理空字符串
 var width=box.style.width?parseFloat(box.style.width):0;
 boc.style.width=width+20+"px";
//第二种
var box=document.getElementById('inner');
var style=box.style;
var width=style.width?parseFloat(style.width):0;
boc.style.width=width+20+"px";

2、想把十进制96转成二进制,下面写法对吗?不对应该怎么写,结果是什么?(4分)

96.toString(2);
加入小括号 结果是 1100000

3、利用if判断,下面需求

(1)某个公司要给员工发年终奖,为了奖励老员工,所以工作时间越长,发的越多,规则如下:
工作满 0 年,发月薪的 1 倍月薪年终奖,如果月薪大于等于8000 ,那么就是发 1.2倍
工作满 1 年,发月薪的 1.5 倍月薪年终奖,如果月薪大于等于10000 ,那么就是发 1.7倍j
工作满 2 年甚至更多 ,发月薪的3 倍月薪年终奖,如果月薪大于等于12000 ,那么就是发 3.2倍
根据的工作年限和薪资,计算应得的年终奖~~(10分)

var years = 0;//工作年限
var salary = 8000;//月薪
var sum;//年终奖

   /* 
             如果工作满0年 并且不满1年  如果月薪大于等于8000 ,那么就是发 1.2倍
             如果工作满1年并且不能满两年 如果月薪大于等于10000 ,那么就是发 1.7倍 否则发月薪的1.5倍
             如果工作满2年 如果月薪大于等于12000,那么就是发3.2倍 否则发月薪的3倍
        */
     var years = 0;//工作年限
     var salary = 8000;//月薪
     var sum;//年终奖
     if(years>=0 &&years<1){
         /* if(salary>=8000){
             sum=salary*1.2;
         }else{
             sum=salary*1;
         } */

         sum=salary>=8000?(1.2*salary):salary;
     }// 当years大于等于1或者小于0 都会走第二条件
     else if(years>=1&&years<2){
        sum=salary>=10000?(1.7*salary):(1.5*salary);
     }else if(years>=2){
        sum=salary>=12000?(3.2*salary):(3*salary);
     };

4、

 var sum=null;
         for (var i = 1; i <= 100; i++) {
           if(i%5===0&&i%3===0){
                sum+=i;//sum=sum+i;
           }
           console.log(i);          
         };
         console.log(sum);