JS语法

作者: 冰哲 | 来源:发表于2016-07-12 23:42 被阅读0次

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

    • CSS样式在网页中应当靠前放置,一般放置在head标签中,一般用link标签或者style标签引入。在加载body之前就加载完css,避免浏览器的白屏和无样式闪烁问题。
    • JS放置在body标签的尾部,一般使用script标签引入,一方面因为加载JS时,一般情况下会阻塞页面的渲染,另一方面防止需要操作的DOM的JS不会因为DOM还没有加载完成而出现错误。

    解释白屏和FOUC。

    • 白屏和无样式闪烁(FOUC)问题,都是浏览器对无样式内容进行渲染时出现的问题。在浏览器还没有得到样式CSS时,有些情况下,即使收到内容,但对于无样式内容不进行渲染,就出现了白屏问题。
    • 无样式内容闪烁是浏览器已经渲染收的的无样式内容,这时候突然收样式,然后给页面进行 重新渲染的过程,之前的页面突然呈现出样式,给人的感觉像突然闪了一下。

    async和defer的作用是什么?有什么区别?

    async和defer是JS脚本异步加载的两种方式:

    • defer,加载后续文档元素的过程将和script.js的加载并行进行(异步),但JS的执行要在所有元素解析完成后进行。
    • adync,加载和渲染后续文档元素的过程将和JS的加载与执行并行进行。

    简述网页的渲染机制?

    分为四个阶段:
    1 解析代码:将HTML文件解析成DOM,将CSS文件解析成CSSOM。
    2 对象合成:将DOM和CSSOM合成一颗渲染树(render tree)
    3 布局:计算出渲染树的布局(layout)
    4 绘制:将渲染树绘制到屏幕
    四部并不是严格按照顺序进行,页面会希望用户尽早看到内容,所以会出现什么都没有加载完毕 浏览器将已经下载的内容先呈现。

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

    JavaScript定义了6种数据类型:

    1. 数值(number):整数和小数。
    2. 字符串(string):字符组成的文本。
    3. 布尔值(boolean):ture和false两个特定值。
    4. undefined: 表示未定义或者空缺,此处目前没有任何值。
    5. null:表示空缺,此处应该有一个值但此时未空。
    6. 对象(object):各种值组成的集合。

    五种简单数据类型:number,string,boolean,undefined,null。
    一种复杂类型:object。

    NAN、null和undefined分别代表了什么?

    NAN:表示not a number,表示这不是一个数,可能是除了数以外的任何东西,不于自己相等。
    Undefined与null意义非常接近,在if语句中都代表false,undefined == null 结果也为true。区别在于,null是属于对象的,typeof null的结果是 “object”,在理解上,null表示空值,而undefined表示未定义。

    typeof 和 instanceof的作用和区别?

    • typeof检测一个变量的类型,返回的是变量的类型。
    • instanceof某个变量是否是某个对象的实例,返回布尔值。

    代码

    完成如下代码判断一个变量是否是数字、字符串、布尔、函数。

    function isNumber(el){
      return typeof(el) === "number";
    }
    function isString(el){
      return typeof(el) === "string";
    }
    function isBoolean(el){
      return typeof(el) === "boolean";
    }
    function isFunction(el){
      return typeof(el) === "function"
    }
    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
    

    以下代码的输出结果是?

    console.log(1 + 1);    //2
    console.log("2"+"4");  //24
    console.log(2+"4");    //24
    console.log(+new Date()); //1468288803278
    console.log(+"4");  //+4 只有右侧有数字或者字符串,且在  字符串为十进制数时,返回(+/-)+数字
    

    以下代码的输出结果是?

    var a = 1;
    a+++a; //3  相当于(a++)+a  先自增,在加上a。
    typeof a+2; //number2   typeof的优先级高于加法运算,所以先typeof a,在加法运算。
    

    遍历数组,把数组里的打印数组每一项的平方。

    var arr = [3,4,5]
    for (var i=0;i<arr.length;i++){
     console.log(arr[i]*arr[i])
    }                 //9,16,25
    

    遍历 JSON, 打印里面的值

    var obj = {
      name:'hunger',
      sex:'male',
      age:28                            //name:hunger
    }                                   //sex:male
    for(var p in obj){                  //age:28
      console.log(p+":"+obj[p])
    }
    

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

    console.log(a);  // undefined   运行过程中,变量提升,var a;会在程序一开始就运行,但不会赋值。
    var a = 1;
    console.log(a);  //1
    console.log(b);  //ReferenceError: b is not defined
    

    相关文章

      网友评论

          本文标题:JS语法

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