zoukankan      html  css  js  c++  java
  • JavaScript

    1、JavaScript 是一门什么样的语言,它有哪些特点?

      JavaScript 是一种解释型 (即时编译)的一门编程语言。

      特点:a、即时编译

         b、面向对象

         c、可以嵌入到 html 中增加交互行为

         d、扩平台

         e、node.js 默认使用它

    2、介绍 js 的基本数据类型。

      基本数据类型:undefined,null,boolean,number,string

      复杂类型:object。里面包含的 function、Array。

      ES6 中新增了一种 Symbol 。这种类型的对象永不相等,即始创建的时候传入相同的值,可以解决属性名冲突的问题,做为标记。

    3、介绍 js 有哪些内置对象。

      a、浏览器对象 window

        (包含 document、history、location、navigator、screen)

      b、文档对象 document

      c、全局 javaS 对象

        1. String 字符串

        2. Number 数字

        3. Boolean 布尔

        4. Date 日期

        5. Math 计算

        6. REgEx 匹配

    4、列出几条写 JavaScript 的基本规范。

    +   不要在同一行声明多个变量

    +   使用===或!==来比较

    +   使用字面量的方式来创建对象、数组(替代new Array)这种形式

      对象:{}

      数组:[]

    +   不要使用全局函数

    +   switch语句必须要带default分支

    +   函数不应该有的时候有return,有的时候没有return

    +   for-in循环中的变量,用var关键字说明作用域,防止变量污染

    +   变量的声明遵循驼峰命名法,用let替代var,声明构造函数时首字母大写,定义常量的时候尽量用大写字母,用_分割

    +   三元表达式可以替代if语句

    +   &&和||是可以短路的,使用&&时如果前面一个值是错的,那么后面的值不用判断,使用||时,如果前面一个值是对的,那么后面的值不用判断

    +   比较数据类型以下6中情况是false,其他都是true------false、""、0、null、undefined、NaN

    +   数据类型检测用typeof,对象类型检测用instanceof

    +   异步加载第三方的内容

    +   单行注释//,多行注释/**/

    +   使用命名空间解决变量名冲突

    +   多人协作开发,新建一个js文件,const声明常量,在js文件中引用,用常量名替代方法名,这样做可以防止命名冲突

    5、已知 ID 的 Input 输入框,希望获取这个输入框的输入值,

      <input id = "myId" value = "123">

      <script>

        var MyId = document.getElementById('myId');

        var value = MyId.value
      </script>

    6、设置一个已知 ID 的 DIV 的 HTML 内容为 xxx, 字体颜色设置为黑色(不使用第三方框架)

      <div id = "myDiv"></div>

      <script>

        var MyDiv = document.getElementById('myDiv');

        MyDiv,style.color = 'black';

      </sacript>

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

     一: <div id = "myDiv" onclick = "fn()">xxx</div>

      <script>

        function fn() {

          console.log(' hello! ');

        }

      </script>

      二: <div id = "myDiv" >xxx</div>

      <script>

        var MyDiv = document.getElementById('myDiv');

        function fn() {

          console.log(' hello! ');

        }

        MyDiv.addEventListener('click',fn.false);{默认是冒泡的,true 是捕获的}

      </script>

    8、写出下列代码的输出并解释原因。

      var a;

      alert( typeof a );  // 弹出对话框,显示 undefined ,因为声明了没有赋值

      alert( b ); // 在控制台输出异常信息,因为没有声明变量 b

    9、JavaScript 如何实现继承?

      ES6:extends 父类,构造方法中通过 super 初始化父类

      ES5:1、原型链继承 2、构造函数继承 3、组合继承 4、原型式继承 5、寄生式继承 6、寄生组合式继承

    10、eval 的作用以及优缺点?

      作用:计算字符串,并且执行其中的 JavaScript 代码

      优点:功能强大

      缺点:代码注入漏洞

    11、什么是 window 对象?什么是 document 对象?

      window 是浏览器对象,document 是文档对象

    12、事件是什么?IE 与火狐的事件机制有什么区别?如何阻止冒泡?怎么取消默认事件?

      事件就是网页中的某个操作,例如点击、鼠标移动

      事件机制:

        IE:事件冒泡

        火狐:事件冒泡和事件捕获

      阻止冒泡:

        标准写法:event.stopPropagation();

        IE 写法:event.cancelBubble = true;

      取消默认事件:event.preventDedault()

    13、什么是闭包 (closure),为什么要用它?(优缺点)

      闭包就是能够读取其他函数内部变量的函数

      优点:

        a、避免全局变量的污染

        b、希望有一个变量长期存储在内存中 (用于缓存)

        c、拥有私有成员的存在

      缺点:

        a、常驻内存、消耗内存

        b、内存泄漏

    14、写出对 JSON 的了解,JavaScript 中与 JSON 相关的方法有哪些?

      JSON 是一种轻量级的数据交换格式,也是 js 对象的字符串表示法

      JSON.parse() ——> 把一个 json 的字符串转换为 js 对象

      JSON.stringify() ——> 从一个 js 对象转换成 JSON 字符串

    15、js延迟加载的方式有哪些?

      a、ES5:  <script src = index.js' defer='defer'></script>

      b、ES6:  <script src = index.js' async></script>

      c、在 body 结束前动态创建 script 标签对象

        <script>

          var scri = Document.createElement('script');

          scri.src = 'index.js';

          document.body.appendChild(scri)

        </script>

      d、jQuery

        $.getScript( 'index.js' );

      e、注意不保证有效:setTimeout()

      f、<script src='index.js'></script> 放底部

    16、Ajax 是什么?如何发起一个 Ajax请求?

      Ajax 是 Asynchronous JavaScript and XML 的缩写。意思是异步的 JavaScript 和 xml

      前端与后端进行数据交换的一种方式,可以在不重新加载整个页面下,异步的更新网页

      原生 JavaScript

       var xhr = new XMLHttpRequest();

       xhr.open( 'get/post' , '/xxx.php' );

       xhr.send( 'id=' + 123 );

       xhr.onreadystatechage = function(){

        // 修改页面内容的代码

       }

      jQuery

        $.ajax({

          URL,

          TYPE [get/post],

          Data

          dataType  [text/json]

          success

          error

          timeout

        })

      Axios(完美支持 RESTFul)

        Axios.get/post/delete/head/put/patch ('/xxx.php')   [具体用哪个要看后端给的 api 文档]

        .then()

        .catch()

    17、jQuery 与 jQuery UI 有什么区别?

      jQuery 对 JavaScript 进行了封装,更高兼容性,更方便,但没有 UI 框架

      jQuery UI 是 jQuery 插件,是一套 UI 框架

      【补充】easyui 和 bootstrap 也一样基于 jQuery,一定程度完美替代了 jQuery UI

    18、jQuery UI 如何自定义组件?

      $.widget() 方法定义

    19、如果需要手动写动画,你认为最小时间间隔是多久,为什么?

      使用 css3、15毫秒。因为大部分显示器 60Hz 一帧就是 1/60 秒

    20、经常遇到的浏览器的兼容性有哪些?原因。解决方法是什么,常用 hack 的技巧吗?

      常见兼容性问题:margin,padding,border,float,居中,div 超出内容各浏览器解释不一致等

      原因:IE6 以前各浏览器没有统一的标准 (后来不断朝着统一方向走)

      可以采用 Hack css,在 css 类内部 hack,选择器 hack, html 引用 hack

      建议采用 html5 + css3 标准

      页面头加 <!DOCTYPE html>, 还是规避一些, IE10 仍然未解决的 那部分 css3 最好不用

      Border image IE10 不支持

      Flexbox hack

      新表单控件 (例如 DateTime、Range、Colour 等等)

      其他基本都支持了

  • 相关阅读:
    HNOI2018退役记
    codeforces 960G Bandit Blues
    codeforces 933D A Creative Cutout
    tyvj1953 Normal
    loj6119 「2017 山东二轮集训 Day7」国王
    codeforces 293E Close Vertices
    bzoj1808 [Ioi2007]training 训练路径
    bzoj2219 数论之神
    bzoj4361 isn
    loj2064[HAOI2016]找相同字符
  • 原文地址:https://www.cnblogs.com/HYTing/p/12727894.html
Copyright © 2011-2022 走看看