JS 语法

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```。

***
该教程版权归本人和饥人谷所有,转载请注明来源。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,056评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,842评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,938评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,296评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,292评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,413评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,824评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,493评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,686评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,502评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,553评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,281评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,820评论 3 305
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,873评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,109评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,699评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,257评论 2 341

推荐阅读更多精彩内容

  • CSS和JS在网页中的放置顺序是怎样的? CSS一般放置于网页开头,head标签内。 JS一般放置于网页最后,bo...
    Nicklzy阅读 598评论 0 50
  • 1.CSS和JS在网页中的放置顺序是怎样的?为什么会出现白屏和FOUC? 在写HTML代码时,我们都是将CSS文件...
    26d608950683阅读 626评论 0 0
  • 问答题 CSS和JS在网页中的放置顺序是怎样的?答:css:通过link标签将样式表放在 中。js:放在 中尾部。...
    饥人谷_桶饭阅读 281评论 0 0
  • 一、CSS和JS在网页中的放置顺序是怎样的?js引入样式:1、内部js样式 alert(1); 2、引入外部js样...
    崔敏嫣阅读 277评论 0 0
  • 1.CSS和JS在网页中的放置顺序是怎样的? css一般使用 link 标签将样式表放在顶部的 标签内,js一般放...
    车万里阅读 363评论 0 0