JS 语法

作者: 王康_Wang | 来源:发表于2016-07-10 10:57 被阅读0次

1. CSS 和 JS 在网页中的放置顺序是怎样的?

CSS部分一般放在<head>内,而JS一般放在<body>的最后。因为对于图片或其他网页内容CSS文件通常会与其并发加载,而加载JS时浏览器会禁用并发加载,这就影响了页面加载速度,故而将JS放在HTML文件后面。

2. 解释白屏和FOUC。

  • 当CSS文件或链接放在<body>元素最后时,因为浏览器对于HTML文件是自上而下加载解析,这就导致了在CSS文件的加载解析时机被推后,由于解析完成之前浏览器不能完成页面的渲染,在这种情况下会出现白屏现象。同样,由于@import的加载时机靠后,所以也会出现白屏的问题。
  • 同样,当把JS文件放在HTML顶部是,由于JS加载时会禁用并发,所以在JS加载完成之前浏览器无法加载之后的HTML文件,也会导致白屏现象。
  • 以上条件在IE浏览器中会出现FOUC(无样式内容闪烁)现象。

3. asyncdefer的作用是什么?有什么区别

正常情况下,浏览器会加载JS文件并立即执行,这就会导致JS命令执行时相应的HTML文件还未渲染完成;

有了async,加载和渲染后续文档元素的过程将和 script.js 的加载与执行并行进行(异步);

同样,**有了defer ** ,加载后续文档元素的过程将和 script.js 的加载并行进行(异步),但 script.js 的执行要在所有元素解析完成之后,DOMContentLoaded 事件触发之前完成。

区别在于defer的情况下,JS的执行会在所有元素解析完成之后,而有async的情况下JS的加载执行会和后续文档同时进行。

4. 简述网页的渲染机制

  • 打开一张网页时,浏览器首先会根据所提供的URL在服务器端找到并加载相应的文件;
  • 加载完成后浏览器会将HTML文件解析成DOM树;
  • 将CSS文件解析成CSSOM树;
  • 将DOM和CSSOM组合成渲染树(render tree);
  • 依据渲染树在屏幕上绘制网页。

5. JavaScript 定义了几种数据类型?哪些是简单类型?哪些是复杂类型?

JavaScript定义了6中数据类型,其中有

  • 三种原始类型(primitive type):数值(number),字符串(string),布尔型(boolean);
  • 一种复杂类型(complex type):对象(object);
  • 还有两个特殊值:undefined和null。

其中对象(object)还可分为3种类型:

  • 狭义的对象(object);
  • 数组(array);
  • 函数(function)。

6.NaNundefinednull分别代表什么?

  • NaN,表示一个值是数字类型但不是具体数字;
  • undefined表示此变量未定义或者不存在;
  • null表示此变量存在但值为空。

7.typeof和instanceof的作用和区别?

typeof的返回值是数据类型字符串,以确认一个值的数据类型。而instanceof的返回值是布尔型,以确定某一值是否为指定数据类型。

代码题:

1. 完成如下代码判断一个变量是否是数字、字符串、布尔、函数 (难度*)

  •   function isNumber(el){
          // todo ...
      }
      function isString(el){
          //todo ...
      }
      function isBoolean(el){
          //todo ...
      }
      function isFunction(el){
          //todo ...
      }
    
      var a = 2,
          b = "jirengu",
          c = false;
      alert( isNumber(a) );  //true
      alert( isString(a) );  //false
      alert( isString(b) );  //true
      alert( isBoolean(c) ); //true
      alert( isFunction(a)); //false
      alert( isFunction( isNumber ) ); //true
    

###2. 以下代码的输出结果是?
- ```
    console.log(1+1); //输出结果是数值相加,输出2
    console.log("2"+"4"); //该运算为字符串相连接,输出"24"
    console.log(2+"4"); //将2转化为字符串"2"后join,输出"24"
    console.log(+new Date());//1468139798410(用new Date() 会转换为从1970.1.1开始的毫秒数)
    console.log(+"4");//将字符串"4"转化为数值,输出4

3. 以下代码的输出结果是?

var a = 1;
a+++a;
typeof a+2;

第二行语句中,因为```a++```优先级高于```++a```,故第二行语句也可写成```(a++)+a;```
结果为3,
第三行语句中,```typeof a```的优先级高于```a+2```,```typeof a```的返回值为```'number'```,故代码输出结果是```'number2'```。

###4. 遍历数组,把数组里的打印数组每一项的平方
- ```
var arr = [3,4,5]
// todo..
// 输出 9, 16, 25 

1.用for循环:

  •   var arr = [3,4,5];
      for ( var a = 0; a < arr.length ; a++ ) {
          console.log(arr[a]*arr[a]);
      }
      // 9
      // 16
      // 25
    
2.用while循环:
- ```
    <script type="text/javascript">
    var arr = [3,4,5];
    var a = 0;
    while (a<3){
        console.log(arr[a]*arr[a]);
        a++;
    }
    // 9
    // 16
    // 25

5.遍历 JSON, 打印里面的值

  •   var obj = {
        name: 'hunger',
        sex: 'male',
        age: 28
      }
      //todo ...
      // 输出 name: hunger, sex: male, age:28
    
使用for...in语句:
- ```
    var obj = {
      name: 'hunger',
      sex: 'male',
      age: 28
    }
    for (var a in obj){
    console.log(a+':'+obj[a])
    }
    //name:hunger
    //sex:male
    //age:28

6. 下面代码的输出是? 为什么

  •   console.log(a);//undefined
      var a = 1;//
      console.log(a);//1
      console.log(b);//Uncaught ReferenceError: b is not defined(…)
    
第一条:由于变量提升,故存在变量 ```a ```,但变量 ```a ```未被赋值;
第二条:给 ```a``` 赋值;
第三条:打印 ```a``` 的值;
第四条:没有定义变量 ```b```。

***
该教程版权归本人和饥人谷所有,转载请注明来源。

相关文章

  • JS基础和WebAPIs的关联性

    学习ECMAscript标准规定的基本语法掌握JS基础语法只学习JS基础做不了网页交互效果学习JS基础语法是为了后...

  • react-jsx

    jsx 是类似 js 模板语法 声明 jsx 使用 jsx jsx 语法 jsx 是 js 的语法扩展,在 jsx...

  • 4/07day28_js基础

    day28_js基础 回顾 JS基础语法 JS运算符 JS流程控制语句 条件语句 JS的条件语句和Java语法基本...

  • JSX语法

    在react中,在js文件里写html标签,我们把这种语法称为 jsx语法。 jsx语法与普通js语法的区别 普通...

  • Vue入门(1)

    一、 前置知识 Node.js已安装 HTML语法(MDN) CSS语法(w3school) JS语法(阮一峰)...

  • express+ejs实现最简模板

    //语法就是js。。。

  • jsx语法

    什么是jsx语法 html写在js中而且不用加任何引号. 遇见<>按html语法解析,遇见{ }按js语法解析。 ...

  • react入门(一)

    react.js是核心库,react-dom.js提供与DOM相关功能,Browser是将JSX语法转化为js语法...

  • -----Web APIs-----

    JS学习ECMAScript基础语法是为后面做铺垫,Web APIs才是JS的应用,大量使用JS基础语法做交互效果...

  • React 知识点小结(一):基础

    React:facebook公司的框架。2013年开源的项目。 JSX语法:js语法的扩展。JS + XHTML的...

网友评论

    本文标题:JS 语法

    本文链接:https://www.haomeiwen.com/subject/ymjljttx.html