美文网首页
一些JS相关的题目

一些JS相关的题目

作者: Beatrice7 | 来源:发表于2016-05-22 00:40 被阅读74次

    变量作用域

    var bb = 1;
    function aa(bb) {  
     bb = 2;  
     alert(bb);
    };
    aa(bb);
    alert(bb);
    

    函数体内,bb并没有使用var来定义,按理说这个bb在预处理的时候应该是window的属性。但在这里,函数声明的时候,带了一个参数bb,也就是相当于在函数体内声明了var bb。所以,函数里的bb就是函数活动对象的属性。所以函数执行时会输出2。函数执行完后,函数的活动对象被销毁,也就是局部的这个bb被删除了,执行流进入到window,再输出bb,值就是1了。如果声明函数时,把参数那里的bb去掉,这段代码执行起来,结果就是弹出 2 2.

    1. var a=b=3

    var a=b=3 时a是局部变量,而b是全局变量;
    相当于var a = 3;b = 3;b是全局的!

    var a,b;
    (function(){
        alert(a);
        alert(b);
        var a=b=3;
        alert(a);
        alert(b);
    })();
    alert(a);
    alert(b);
    
    运行结果为:
    undefined,undefined,3,3,undefined,3
    

    2. this

    var myObject = {
        foo: "bar",
        func: function() {
            var self = this;
            console.log(this.foo);  
            console.log(self.foo);  
            (function() {
                console.log(this.foo);  //此时的this指向window  
                console.log(self.foo);  
            }());
        }
    };
    myObject.func();
    
    运行结果:
    bar
    bar
    undefined   
    bar
    

    3. jQuery

    • jQuery width() 和 height() 方法
      width() 方法设置或返回元素的宽度(不包括内边距、边框或外边距)。
      height() 方法设置或返回元素的高度(不包括内边距、边框或外边距)。

    • jQuery innerWidth() 和 innerHeight() 方法
      innerWidth() 方法返回元素的宽度(包括内边距)。
      innerHeight() 方法返回元素的高度(包括内边距)。

    • jQuery outerWidth() 和 outerHeight() 方法
      outerWidth() 方法返回元素的宽度(包括内边距和边框)。
      outerHeight() 方法返回元素的高度(包括内边距和边框)。

    4. ARP是地址解析协议

    ARP是地址解析协议,工作在网络层,简单语言解释一下工作原理。
    1:首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
    2:当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机 IP地址,源主机MAC地址,目的主机的IP 地址。
    3:当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。
    4:源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
    广播发送ARP请求,单播发送ARP响应。

    • TCP和UDP是传输层,ARP是网络层。FTP应用层。

    • OSI模式把 网络工作 分为七层,彼此不直接打交道,只通过接口(layer interface). IP地址 在第三层, MAC地址 在第二层。协议在发送数据包时,得先封装第三层(IP地址),第二层(MAC地址)的报头, 但协议只知道目的节点的IP地址,不知道其MAC地址,又不能跨第二、三层,所以得用ARP的服务

    IP地址分类

    • 1. A类IP地址 一个A类IP地址由1字节的网络地址和3字节主机地址组成 ,网络地址的最高位必须是“0”, 地址范围从1.0.0.0 到126.0.0.0。
    • 2. B类IP地址 一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成 ,网络地址的最高位必须是“10”,地址范围从 128 .0.0.0到191.255.255.255。
    • 3. C类IP地址 一个C类IP地址由3字节的网络地址和1字节的主机地址组成 ,网络地址的最高位必须是“110”。范围从 192 .0.0.0到223.255.255.255。

    6. jquery ajax中都支持哪些返回类型?

    数据类型
    $.ajax()函数依赖服务器提供的信息来处理返回的数据。如果服务器报告说返回的数据是XML,那么返回的结果就可以用普通的XML方法或者jQuery的选择器来遍历。如果见得到其他类型,比如HTML,则数据就以文本形式来对待。
    通过dataType选项还可以指定其他不同数据处理方式。除了单纯的XML,还可以指定 html、json、jsonp、script或者text。

    7. javascript数据类型

    js七种数据类型:String Boolean Number null undefined Object Array
    五种基本类型:String Boolean Number null undefined
    六种返回格式:'string' 'number' 'object' 'function' 'boolean' 'undefined'

    • JavaScript内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。
    • javascript中字符串连接时用Array.join()替换 string += "xx",换来几十倍的速度提升。
    console.log(1+ "2"+"2");
    console.log(1+ +"2"+"2"); // 1 + 2 + "2"
    console.log("A"- "B"+"2");
    console.log("A"- "B"+2); //字符串相减就是得出NaN,console.log("B"- "A"+2);也一样是NaN
    输出:
    122
    32
    NaN2
    NaN
    

    8. 嵌入在HTML文档中的图像格式可以是?

    bese64编码文件
    常用的页面的图片格式有三种,GIF、JPG、PNG。我们把图像文件的内容直接写在了HTML 文件中,这样做的好处是,节省了一个HTTP 请求。坏处呢,就是浏览器不会缓存这种图像。

    9.

    indexdDB 是 HTML5 的本地存储,把一些数据存储到浏览器(客户端)中,当与网络断开时,可以从浏览器中读取数据,用来做一些离线应用。
    Cookie 通过在客户端 ( 浏览器 ) 记录信息确定用户身份,最大为 4 kb 。
    url 参数用的是 get 方法,从服务器上获取数据,大小不能大于 2 kb 。
    Session 是服务器端使用的一种记录客户端状态的机制 。
    post 是向服务器传送数据,数据量较大。
    local Storage 也是 HTML5 的本地存储,将数据保存在客户端中(一般是永久的)。

    10. 解释性语言 & 变异性语言

    解释性语言和编译性语言的定义:
    计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。

    • 解释性语言的定义:解释性语言的程序不需要编译,在运行程序的时候才翻译,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就需要逐行翻译一次,效率比较低。现代解释性语言通常把源程序编译成中间代码,然后用解释器把中间代码一条条翻译成目标机器代码,一条条执行。 非独立。
    • 编译性语言的定义:编译性语言写的程序在被执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。
    • 非独立应该是针对需要解析器来说的。

    11. 区分对象与表达式

    window.setTimeout(checkState, 10000);
    window.setTimeout(checkState(), 10000);
    

    heckState加了圆括弧相当于函数表达式,会立即执行,执行的结果作为返回值传递给settimeout。
    checkState不是一个函数 是对象 所以没有()

    12.

    请问 a 的结果是什么?

    if(! "a" in window){
        var a = 1;
    }
    alert(a); //undefined
    

    知识点有两个:

    1. 变量声明提前
    2. 的优先级高于in, 所以条件语句根本没执行。

    function和var会提前声明,而其实{…}内的变量也会提前声明(没有快寄作用域)。于是代码还没执行前,a变量已经被声明,于是 ‘a’ in window 返回true,a被赋值。

    13. GET & POST

    指针

    #include<stdio.h>
    void main()
    {
        short *p,*q;
        short arr[15]={0};
        p=q=arr;
        p++;
        printf("%d,",p-q);
        printf("%d,",(char*)p-(char*)q);
        printf("%d",sizeof(arr)/sizeof(*arr));
    }
    

    指针自增、自减每次移动的偏移量是指针所指向对象的字节大小,所以p++与q的偏移量是2个字节。
    指针相减的值是指针地址的偏移除以指针每次移位的大小;
    1)p-q=1;偏移量为2个字节,每次移动2个字节,所以为1
    2)(char )p-(char )q,指针的偏移没变,但是每次指针移位是按照(char)类型移动,即每次移动1个字节,所以是2
    3)数字每次元素2个字节,所以sizeof(arr)为30,sizeof(
    arr)为2。

    int main(){
      int a;float b,c;
      scanf("%2d%3f%4f",&a,&b,&c);
      printf("\\na=%d,b=%d,c=%f\\n",a,b,c);
    }
    

    若运行时从键盘上输入9876543210l,则上面程序的输出结果是a=98,b=0,c=0.000000
    %2d是将数字按宽度为2,采用右对齐方式输出,若数据位数不到2位,则左边补空格
    输入的数据没有以空格或者别的空白符分割,故都属于第一个数

    相关文章

      网友评论

          本文标题:一些JS相关的题目

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