1.JavaScript的数据类型都有什么?

基本数据类型:number、string、boolean、undefined、null 
复杂数据类型:Object(Array,Date,RegExp,Function)


  • 用户: 陈多福_ 时间: 2019-06-24 22:20

    es6新增了symbol

2.已知ID的Input输入框,希望获取这个输入框的输入值,怎么做?(不使用第三方框架)

document.getElementById(“ID”).value


  • 用户: Dreams 时间: 2019-01-10 17:07

    2

3.希望获取到页面中所有的checkbox怎么做?(不使用第三方框架)

var domList = document.getElementsByTagName("input");
var ckList = [];//返回的所有的checkbox
var len = domList.length;
for (var i = 0; i < len; i++) {
    if (domList[i].type == "checkbox") {
        ckList.push(domList[len]);
    }
}


  • 用户: 指间沙 时间: 2019-01-22 16:57

    ckList.push(domList[len]) 这里len应该是 i 吧?? ckList.push(domList[i])
  • 用户: ???????? 健 时间: 2019-03-16 22:18

    是的,应该是i,否则这个添加没有意义
  • 用户: 迁就。 时间: 2019-03-22 08:08

    对,应该是i
  • 用户: fabulous 时间: 2019-06-11 23:03

    臣附议

4.设置一个已知ID的DIV的html内容为xxxx,字体颜色设置为黑色(不使用第三方框架)

var dom = document.getElementById(“ID”);
dom.innerHTML = “xxxx”
dom.style.color = “#000”;//”black”


    5.当一个DOM节点被点击时候,我们希望能够执行一个函数,应该怎么做?

    HTML事件绑定:
    DOM0事件绑定:xxx.onclick = test 
    DOM2事件绑定:addEventListener(div1, ‘click’, test) 
    扩展:Javascript的事件流模型都有什么? 
    事件流: 
    从最不确定的元素(最外层容器)到目标元素,再由目标元素到最不确定的元素(最外层容器); 
    也就是说先经历事件捕获,到目标元素,再经历事件冒泡 
    “事件冒泡”:事件开始由最具体的元素接受,然后逐级向上传播 
    “事件捕捉”:事件由最不具体的节点先接收,然后逐级向下,一直到最具体的


      6.看下列代码输出为何?解释原因。

      var a;
      alert(typeof a); // “undefined”
      //alert(b); // 报错 
      b=10;
      alert(typeof b);//”number”
      答案:undefined、number 
      undefined产生情况: 
      1、一个变量定义了却没有被赋值 
      2、想要获取一个对象上不存在的属性或者方法: 
      3、一个数组中没有被赋值的元素 
      4、调用函数,参数未传 
      扩展:not defined语法错误


      • 用户: Look at me now 时间: 2018-12-27 17:41

        00

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

      var a = null;
      alert(typeof a); //object


      • 用户: ???????? 健 时间: 2019-03-16 22:22

        null本来就是Object.prototype.__proto__,基类型自然就是Object

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

      var undefined;//此时undefined这个变量的值是undefined
      undefined == null; // true
      1 == true;   // true
      此时会把布尔类型的值转换为数字类型 true=1 false=0
      2 == true;   // false
      0 == false;  // true
      0 == '';     // true
      NaN == NaN;  // false isNaN
      [] == false; // true   解释:会把[]和false都通过Number()转换为数字类型
      [] == ![];   // true   解释:![]:false
      []==[];//false
      一个是number一个是string时,会尝试将string转换为number 
      一个是number一个是boolean,将boolean转换为number,结果:true:1 false:0 
      一个是object 另一个是string或number,将Object转换成number或string 
      所以,对于0、空字符串的判断,建议使用 “===” 。“===”会先判断两边的值类型,类型不匹配时为false。


      • 用户: 岳静阁 时间: 2019-04-08 18:27

        []==[];//false 这个没有给出解释啊
      • 用户: 陈多福_ 时间: 2019-06-24 22:24

        []==[] ,数组是指针类型 指向内存,.内存不一致 就是false

      9.看下列代码会有什么样的输出?

      var foo = "11"+2-"1";  
      console.log(foo);//112-1=111
      console.log(typeof foo);//”number”
      考点: 
      1、数字和字符串都可以用加法运算符,数字和字符串相加,结果就是一个字符串 
      2、但是减法运算符只能用于两个数字之间,想要执行减法运算,必须把两边数字都变成数字类型的 
      答案:”111”、”number”


        10.已知数组var stringArray = [“This”, “is”, “Baidu”, “Campus”],alert出”This is Baidu Campus”。

        考点:数组的join方法的使用 
        答案:alert(stringArray.join(“ ”))


          11.var numberArray = [3,6,2,4,1,5];

          1) 实现对该数组的倒排,输出[5,1,4,2,6,3]
          
          function reverseArray(arr){
              var result=[];
              //方法1:
              /*for (var i = arr.length - 1; i >= 0; i--) {
                  result.push(arr[i]);
              }*/
              //方法2:
              for (var i = 0, len = arr.length; i < len; i++) {
                  result.unshift(arr[i]);
              }
              return result;
          }
          2) 实现对该数组的降序排列,输出[6,5,4,3,2,1] 
          冒泡排序过程演示
          
          function sortDesc(arr) {
              for (var i = 0, len = arr.length; i < len; i++) {
                  for (var j = i + 1, len2 = arr.length; j < len2; j++) {
                      //>就是降序 <就是升序
                      if (arr[j] > arr[i]) {
                          var temp = arr[j];
                          arr[j] = arr[i];
                          arr[i] = temp;
                      }
                  }
              }
              return arr;
          }


            12.输出今天的日期,以YYYY-MM-DD的方式,比如今天是2014年9月26日,则输出2014-09-26

            考点:日期对象Date相关API的使用
            var d = new Date();
            // 获取年,getFullYear()返回4位的数字 
            var year = d.getFullYear(); 
            // 获取月,月份比较特殊,0是1月,11是12月 
            var month = d.getMonth() + 1; 
            // 变成两位 
            month = month < 10 ? ‘0’ + month : month; 
            // 获取日 
            var day = d.getDate(); 
            day = day < 10 ? ‘0’ + day : day; 
            alert(year + ‘-’ + month + ‘-’ + day);


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

              这种写法称之为短路表达式 
              相当于:
              var foo;
              if(foo){
                  foo=foo;
              }else{
                  foo=bar;
              }
              答案:常用于函数参数的空判断 
              短路表达式:作为”&&”和”||”操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程便告终止,这称之为短路求值。 
              考点:if条件的真假判定 
              记住以下是false的情况:空字符串、false、undefined、null、0


                14.看下列代码,将会输出什么?

                考点:1、变量作用域 2、变量声明提升
                var foo = 1;
                function f(){
                    console.log(foo);
                    var foo = 2;
                    console.log(foo);
                }
                f();
                答案:输出undefined 和 2。


                  15.用js实现随机选取10–100之间的10个数字,存入一个数组,并排序。

                  var iArray = []; 
                  function getRandom(istart, iend){
                          var iChoice = iend - istart +1;
                          return Math.floor(Math.random() * iChoice+ istart);
                  }
                  Math.random()就是获取0-1之间的随机数(永远获取不到1)
                  for(var i=0; i<10; i++){
                  var result= getRandom(10,100);
                          iArray.push(result);
                  }
                  iArray.sort();