一些JS相关的题目

2016-05-22  本文已影响74人  Beatrice7

变量作用域

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

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响应。

IP地址分类

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'

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. 解释性语言 & 变异性语言

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

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位,则左边补空格
输入的数据没有以空格或者别的空白符分割,故都属于第一个数

上一篇 下一篇

猜你喜欢

热点阅读