变量作用域
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
知识点有两个:
- 变量声明提前
-
!
的优先级高于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位,则左边补空格
输入的数据没有以空格或者别的空白符分割,故都属于第一个数