JavaScript基础

JavaScript基础
JavaScript基础

Javascript中的数据类型:

基本数据类型:数字、文字、布尔还支持两种小数据类型:null空undefined未定义复合数据类型:对象object (数字字符串其他对象的集合无序的集合)

数组array (有序的集合也要保存数字字符和其他对象) *特殊的对象函数function 他是有可执行代码的对象可以调用函数执行某些操作。

Javascript核心专用对象:Date日期对象、RegExp正则表达式、Error运行时错误的对象

数字(number)

Javascript不区别整型和浮点型他是是一个64位浮点格式

最大值为:正负1.7976931348623157X10 308次方最小值:正负5X10 -324次方

八进制和十六进制的直接量:

JavaScript还可以0X 0x 开头的,十六进制数如0x1f0

浮点直接量:

可以是直接的量:1.23

23456.78

还可以是数字后跟随E e后面加上正负号: 123.3e10 123.e-10

特殊的值:Infinity NaN

值无穷大:JavaScript输出一个:Infinity 同样负值的话就会输出-Infinity

判断一个数是否为无穷大:isFinite()

算术运算出现错误(0除0): 返回一个JavaScript 会输出NaN

判断运算结果是否为一个错误特殊值NaN:isNaN()

特殊数值的常量:

Infinity 表示无穷大的特殊值

NaN 特殊的非数字值

Number.MAX_V ALUE 可表示的最大的数字

Number.MIN_V ALUE 可表示的最小的数字

Number.NaN 表示一个非数字的特殊值NaN

Number.POSITIVE_INFINITY 表示正无穷大的特殊值Infinity

Number.NEGATIVE_INFINITY 表示负无穷大的特殊值-Infinity

字符串(String)

JavaScript中的字符表示,不区别?“单引号和双引号

如果使用:??单引号时,字符串还有单引号那么要使用\?转义他

同样””双引号中再使用双引号也要转义他否则就用单引号

转义序列:

\0 NUL字符

\b 退格符

\t 水平制表符

\n 换行符

\f 换页符

连接字符串:使用+ 加号来连接字符串

如msg = “Hello “ + “World”;

msg的结果就是Hello World

字符串对象的属性:

String.length 表示当前的字符串的长度

字符串函数:

String.charAt(索引):得到字符串当前索引的字符。

例子:msg.charAt(0) 拿到的是H

String.substring(开始位置,结束位置):

得到字符从字符串开始位置到结束位置-1的一个子字符串。

例子:msg.substring(1,4) 得到ell

String.indexOf(字符):在字符串中搜索当前字符的索引位置得到一个数字

例子:msg.indexOf(…W?) 得到是6

*字符串和数组一样是从0开始索引的

数字转为字符串:

var a =100;

var s = a + “hello”; 只要让数字+ 加一个字符串就可以得到个字符串

或者var s = a+?…;

数字.toString()

String(数字) 这几种方法都可以将数字转为字符串

或者直接使用String(数字)函数这样直接把数字转为一个字符串类型

还可以使用数字对象自带的方法toString()

数字的toString()方法有一个参数:转为进制数如

100.toString(2)那么他就转为一个2进制数

浮点数字转为字符串时可以处理小数点:(直接转为字符串并处理小数点)toFixed(0)表示转为字符串并保存几位小数(四舍五入)

toExponential(2)使用科学计数法,也是保留几位小数

toPrecision(4)保留几位数小数位+整数位

var a = 123.456789;

a.toFixed(2) 保留两位小数123.46

a.toExponential(4) 1.23456e+2

a.toPrecisioin(4) 123.4

字符转为整数:

可以是两个字符数字进行* 乘法运算可以得到一个数字

var prod = “21” * “20”是一个数字

var a = “200”;

var a-= 0 可以把这个字符数字减去0得到一个数字

或者直接使用Number(字符串) 直接把字符串转为一个数字

(以上方法只能是10进制数的字符串)

更灵活的转换方法

parseInt() parseFloat() 这两个函数可以把字符串开头的数字截取出来转为十进制

parseInt(数字,进制数) 截取的数字,相应的进制数(转为十进制)不去解

析0开头的

parseFloat()保留小数位

var a = “1.23 Hello”;

var b = “111 Hello”;

praseInt(b,2) 返回的是7

parseInt(a) 返回的是1

parseFloat(a)返回的是1.23

布尔值(Boolean)

他不两个值:true 和false

a == 4比较运算如果a不等于4那么返回false否则返回true

布尔值的类型转换:

0、NaN、undefined用在布尔值的地方都被视为false

其他都被视为true;

次反var isboolean = !!?a?; 也可以将值转为布尔值

也可以使用Boolean()将一个值转为布尔值更简单的方法是用非运算取两

函数(function)

是一个可执行的javascript代码段,由javascript程序定义或由javascript实现定义。他可有实际参数和形式参数,来用于指定这个函数执行计算要使用的一个或多个值还可以返回值。

因为function不是数据类型所以很灵活,他可以存放在数组中对象中。

定义方法:

function 方法名(参数){

代码段

}

var 方法名= function(参数){

代码段

}

还有一种是使用Function()对象方法来实现

var square = new Function(参数, 方法实体); 不使用

对象(object)

对象是已命名的数据的集合

要引用一个对象的属性那么就先要引用这个对象。

如要引用image对象中的width 那么就要

image.width这样写

也可以使用关联数组的方式来访问

image[“width”] 这样的写法访问

一个函数值是存储在某个对象的属性中的,那么那个函数通常被称为方法,属

性名也就是变成了方法名。要调用一个对象的方法,要使用”.”语法将函数值

从对象中提取出来,再然后面加上()语法调用那个函数。

document.write() 就调用了这个对象中的wirte()方法

创建对象:对象是通过调用特殊的构造函数constructor function创建的如:var o = new Object();

var now = new Date();

var patten = new RegExp(“\\sjava",”i”)

一旦创建了对象就可以访问,或创建这个对象中的成员属性

var point = new Object();

point.x = 2.3

创建静态成员属性:

var point = {x:2.3,y:-1.2};

也可以嵌套的:

var rectangle = {

up:{x:2,y:3},

“down”:{x:4,y:5}

};

静态成员属性的key键:可以是字符串。

对象转换:toString方法和valueOf()方法

当一个对象直接被输出的时候他会调用这个对象中的toString()方法。

当对象被用于数字环境的时候他会调用这个对象中的valueOf()方法。

(返回本身调用toString()转为一个字符串)

注意:大多数情况下valueOf()返回的一般都是对象自己,这种情况下javascript首先使用toString()方法把对象转换为一个字符串,然后,再试图把该字符串转为一个数字

var object = new Object();

object.height = 100;

object.toString = function(){

return "Is Test Object function";

} 重写了toString方法

alert(object);会输出Is Test Object function

数组(array)

是一个数值的集合,数组是用下标index来索引值的。

他可以存放任何一种javascript数据类型,包括其他数组,对象函数的引用。

创建一个数组:

var a = new Array();创建一个数组

a[0] = …lai?;

a[1] = …JavaScript?;

a[2] = {x:1,y:2}

通过构造函数来初始化数组:

var arr = new Array(1.2,”java”,true);

Array(10)构造中传递一个参数,那么该参数指定的是数组的长度。

其中这个数组是一个长度为10的未定义元素的新数组

创建一个静态数组:

var arr = [1,2,3,4 ];

也可以是嵌套

var arr = [[1,2,3,4],[1,2,34,],[5,4,6]] 他的值可以是变量或者表达式

静态数组存放未定义的元素

var arr = [1,2,,,]; 存放了3个未定义的元素

null无值空

它表示无值,无对象。如果一个变量的值为null那么就说明它的值不是有效的对象、数组数字、字符串和布尔值。

当null用于布尔环境中判断时它会被转换为false,当它用于一个数字环境中,它转为0当它用于字符串环境中它转为null

var a = null;

if(a){

alert('hello');

}else{

alert('no'); //null在用于布尔值的环境中他是表示为false

}

var b = 100;

b+=a; //在null 用于数字中他表示为0

alert(b);输出100

alert(a); //输出null在null用于字符串输出时他表示为null

undefined未定义

使用一个未被声明的变量,或已被声明但是没有赋值的变量,和一个并不存在的变量时返回undefined

运算符== 等于undefined == null返回的是true表示他们是相等的因为都表示为缺少值

运算符===恒等undefined === null false

在布尔运算中他为false数字环境中NaN字符串为undefined

Date对象

Date不是基本类型他是javascript提供表示时间的一个对象。在javascript中可以使用new来构造Date()方法

var now = new Date()使用Date()构造函数可以得到当前的时间

也可以将Date对象转换成一个字符串,

xmas.setFullYear(xmas.getFullYear()+1)得到当前的年份

Date对象方法:

getFullYear()得到当前的年份

getDay()得到当天是星期几

toLocaleString()把当前的详细日期和时间输出成字符串

JavaScript中的自动转换表:

值值所使用的环境

字符串数字布尔对象

未定义”undefined”NaN false Error

null “null”0 false Error

非空的字符不变字符串的数字值或NaN true String对象

空字符不变0false String对象

0”0”0 false Number对象

NaN “NaN”不变false Number对象

无穷”Infinity”不变true Number对象

负无穷“-Infinity”不变true Number对象

任意其他的数字其他数字不变true Number对象

true “true” 1 true Boolean对象

false “false”0 false Boolean对象

对象toString()方法valueOf() true 不变

toString()

或NaN

基本数据类型的包装对象:数据包装和Java中的包装类有类似

基本数据类型的包装类:Number String Boolean类

因为有了这些包装类,所以字符串数字和布尔值才能调用他们相应的方法和属性。

因为在javascript内部,字符串”is a string”可以在调用他的属性的时候,他会瞬时创建一个String对象,再去调用其中的方法。如length调用完之后会立即丢弃这个对象(回收)但是is a string这个字符串是不会被修改的。

创建一个静态的包装类对象

var s = new String(“Hello World”);

这样创建出来的使用typeof来查看他的类型返回的是object一个对象类型

同样如果把这个String对象使用+运算连接一个字符串,那么他相应的也会把当前的这个对象转为基本的字符串以便字符串的连接操作。

还可以使用Object(数字,字符串,布尔值)得到的也是相应的对象

例子:var isnumber = Object(200)这个isnumber是Object对象他会自动转为

相应的包装对象

对象到基本类型的转换:

当一个非空的对象用在布尔环境中,都表示true。他在所有的对象包括数组和函数中都是成立的。即使对应的那些表示应转换为false的基本类型包装对象来说。如:new Boolean(false)生成一个布尔对象值为false但是用在布尔环境中他就是

true因为他是一个非空的对象

new Number(0) 一样的这是生成一个Number对象值为0是非空的对象

new String(“”) new Array();

注意:valueOf()通常返回的是一个未转换的对象,所以javascript才会去调用toString

方法返回一个字符串。

总之一句话,toString()将对象转为一个字符串,valueOf()将对象转为一个进行运算的一个数字(大多情况下返回的是toString()的内容)。

传值和传址

传值:简单来说就是传给一个变量或者一个函数的值的拷贝不会影响原来的值

传址:就是把这个值的物理地址传给变量或者一个函数,在操作中对这个值进行了修改那么变量并不会直接存储这个值,而是存储这个值的地址。在传址的赋值过程中,新的变量所指向的值和原始变量所指向的值是相同的如果值通过一个地址发生了变化,这个改变也会通过原始地址表现出来(也会变化)

传值传址

复制实际复制的是值,存在两复制的只是对数值的引用,如果通过这个新的个不同的独立的拷贝引用修改了数值,原始的值也会被修改

传递传递函数的是值的一个独立传递给函数的是对数值的引用如果,函数内拷贝对它的改变在函数外没影响部修改了,那么在外部也会被修改

比较比较的是两个独立的值通过逐字比较的是两个引用,以判断它们引用的是节比较,以判断它们是否相同否为同一个地址的值,对两个不同的数值

的引用不相等,即使这两个的数值是相同

的字节构成的(即使他们的值相同但是地

址不同就是不相等)

基本类型和引用类型

数字布尔都是基本类型

对象,数组和函数是对象的特殊类型,所以他们是引用类型。

传值的实例:

var n = 1;

var m = n;

function add_to_total(total,x){

total += x;

}

add_to_total(n,m);

if(n==1) m =2;

alert(n + ' ' + m);n还是等于1因为他是基本类型只是传值

传引用的实例:

var xmas = new Date(2007,11,25);

var soli = xmas;

soli.setDate(21);

function add_to_totals(totals,x){

totals[0] = totals[0] +x;

totals[1] = totals[1] +x;

totals[2] = totals[2] +x;

}

var arr = [1,2,3];

add_to_totals(arr,1);

alert(arr);得到的是[2,3,4] 因为数组是对象传的是引用

if(xmas == soli) alert('xmas == soli is true');这下是相等的因为

var soli = xmas;soli.setDate(21);soli

修改了xmas也修改了所以相等

var xmas = new Date(2007,11,15);

var soli_plus_4 = new Date(2007,11,15);

if(xmas != soli_plus_4) alert('xmas is not soli_plus_4');不相等因为他们的地址不相同

注意:如果函数内部用一个新的对象或数组来覆盖这个引用的话,那么外部是不可以见的。

function add_to_totals2(totals,x){

var newtotals = new Array();

newtotals[0] = totals[0] +x;

newtotals[1] = totals[1]+x;

newtotals[2] = totals[2]+x;

totals = newtotals;//在内部totals被newtotals覆盖了

}

var a = [1,2,3];

add_to_totals2(a,1);

alert(a);还是[1,2,3]

在javascript中字符串是传值比较的也就是说

var s1 = “hello”;

var s2 = “hell” + “o”

if(s1== s2) 是成立的

各类型传值或传址的比较

类型复制传递比较

数字传值传值传值

布尔传值传值传值

字符串不可变不可变传值

对象传址传址传址

变量

变量variable 是一个和数值相关的名字,用来保存值

var i=2; i变量的值就是2

注意:如果没有用var语句给一个变量指定初始值,那么虽然这个变量被声明了,但是在给它存入一个值之前,它的初始值为undefined var声明的变量是永久性的如果给一个未用var 声明的变量赋值那么Javascript会隐式的声明这个变量

*没有使用var声明的变量都是全局变量不管这个变量是否在函数体内

例子:

function fu(){

a = 100

}

alert(a) 输出100

所以在创建变量一定要加上var关键字

变量的作用域

一个变量的作用域(scope) 是程序中定义这个变量的区域。全局(global)变量的作用域是全局性的。在函数内部的变量就是局总(local)变量。

在函数体内局部变量的优先级比同名的全局变量高。不使用var来声明变量那么在函数内部就会修改和覆盖外部的全局变量

没有块级作用域

JavsScript中没有块级作用域这么一说。因为

function test(o){

var i=0;

if(typeof o == 'object'){

var j=0;

for(var k=0;k<10;k++){

document.write(k);

}

document.write("
" +k); 他可以访问for循环中的k变量

}

document.write( "
" + j); 他可以访问if语句中的j

}

var scope = 'global';

test(new String('a'));

var scope = "global";

function f(){

//scope没有被声明所以他会被隐式的声明var scope

//但是没有被赋值所以是undefined

alert(scope); //因为外部的scope是局部变量所以这里是undefined

var scope = "local"; //现在设置了一个scope变量

alert(scope); //所以这里输出local

}

f();

注意:在一个函数体内,没有声明(var 声明一个变量)直接使用变量名那么他会隐式的使用(var 变量名)去声明这变量,不过他的值为undefined. 如果使用未被声明的变量那么浏览器是会报错

* 作用域链:在嵌套的环境中,变量是从内向外部查询变量的

var a = 100;

function x(){

//var a = 200;

alert(a);

function c(){

//var a = 300;

alert(a); 当c函数中的a不存在的时候会向他的父级x函数查询

a变量。但是x()中的a也不存在的时候就会向外部查找这个变量a最后再输出

也就是他查找变量过程:从内而外的查找变量

}

c(); //100

}

x(); ///100

表达式和运算符expression And operator

运算符表:P为优先级A为运算过程L从左向右R从右向左

P A 运算符运算类型所执行的操作

15 L . 对象,标识符属性存取

L [] 数组,整数数组下标

L ()函数,参数函数调用

R new 构造函数调用创建新对象

14 R ++ lvalue 先递增或后递增运算(一元)

R -- lvalue 先递减或后递减运算一元

R - 数字一元减法负

R + 数字一元加法

R ~ 整数按位取补码的操作一元

R ! 布尔取逻辑补码的操作一元

R delete lvalue 取消定义一个属性一元

R typeof 任意返回数据类型一元

R void 任意返回未定义的值一元

13 L * \ % 数字乘法除法取余运算

12 L + - 数字加法、减法运算

L + 字符串连接字符串

11 L << 整数左移

L >> 整数带符号扩展右移

L >>> 整数带零扩展的右移

10 L <,<= 数字或字符串小于或小于等于

L > >= 数字或字符串大于或大于等于

L instanceof 对象,构造函数检查对象类型

L in 字符串,对象检查一个属性是否存在

9 L == 任意测试相等

L != 任意测试不相等

L === 任意测试同性恒等

L !== 任意测试非恒等

8 L & 整数按位与操作

7 L ^ 整数按位异或操作

6 L | 整数接位或操作

5 L && 布尔值逻辑与操作

4 R ?:布尔值、任意,任意由三个运算数构成的,条件运算符3 R = lvalue,任意赋值运算

2 R *= /= %= += -= 等lvaule任意带操作的赋值运算

1L , 任意多重计算的操作

&& 逻辑与操作有时候可以这样写

他等价于if(a==b) stop();

(a==b) && stop() 当a==b返回为真的时候才会执行stop()

delete 运算符:

1他将删除右边的变量删除成功返回true否则返回false用var 声明的变量是不能删除的如果使用delete删除一个不存在的变量他返回true

2也就是说他可以删除数组的元素和不用var声明的变量还有静态对象的属性3delete只删除属性值不会删除引用的对象

void运算符:

void是一元运算符,可以出现在任何类型操作数之前,它是舍弃运算的值。然后返回undefined。常用于URL中。

void的一个用途是专门生成undefined值。如果要生成undefined值的话那么使用void 0 void(0)

提示:如果对象中没有这个属性那么javascript不会看成一个错误,而是返回u ndefined

语句

if语句:

if(expression) 如果expression得到true或者转为true

那么才会执行statement代码

statement 代码

if else语句

if(expression) 当expression返回为true执行statement 1否则执行statement 2 statement 1

else

statement 2

else if语句

if(expression 1) 当第一个if语句返回为true执行statement 1如果返回false会执

行else if( expression 2)这个语句返回true执行statement 2 否

则执行else中的

statement 1

else if(expression 2)

statement 2

else

statement 3

switch语句(当语句存在多个可能的时候使用switch语句)

switch(expression){

case 值1:

statement 1

break;

case 值2:

statement 2

break;

default:

statement 3

break

} 不同的位置要使用case关键字后加一个值和一个冒号来标记

default表示expression的值都不是case后面的值的话。那么就会

执行default中的语句。break语句表示执行完就中止不会继续向下执

switch(a){

case 1:

case 2:

case 3: 如果case 1和2 3的代码一样可以这样写

alert('不行啊');

break;

case 4:

alert('还行');

break;

case 5:

alert('不错');

break;

case 6:

alert('相当好');

break;

default:

alert('请输入1-6的数字');

}

如果case 值多个case 值的执行代码一样的话那么可以写成

case 1: 其中这里的case 后同的也可以是表达式

case 2: 表达式是使用===恒等运算来比较而不是==

代码

while语句:

while(expression)

statement

while首先计算expression的值。如果它的值为false,那么javascript就转而执行程序中的一条语句。如果为true,那么就执行构成循环体的statement,然后再计算expression的值。这次如果expression为false那么就,执行javascript后面的语句。while(true)为一个死循环

在写while循环的时候要有一个计数一个初始变量条件while(expression)其中这里的expression是判断什么时候开始这个循环当expression返回false那么就停止循环var count = 0; 计数

while(count<10){ 什么时候开始循环

document.write(count);

count++ 迭代方式

}

do/while和while非常相似,只不过它是在循环底部检测表达式,而不是在顶部检查,这就意味着他至少会执行一次可以把while(++i < 10){ 迭代方式写在while中do

statement

while(expression);

例子:

var i = 0; 循环出现了0 1 2 3 4 5 6 7 8 9 如果i为20那么也会执行一次

do{

document.write(i + "
");

i++;

}while(i<10);

可以把迭代写在while中如:

var i = 0;

do{

document.write(i + "
");

}while(++i<10);

for 语句:

for(initialize;test:increment) 他等价于while的写法

statement

for循环在循环开始之前,先计算表达式initialize,一般是设置初始值。每次循环开始前要进行表达式test的判断,这个值用于判断是否要执行循环体,如果test为true 就执行为循环体的statement。最后,计算表达式increment的值,这同样是一个具有副作用的表达式,通常是同仁表达式或者使用++ --运算符。

例子:

for(var count=0;count<3;count++){

document.write(count) 会输出012

}

例子:99乘法表

for(var i=1;i<10;i++){

for(var j=1;j<(i+1);j++){

document.write(j +'x' + i +'='+j*i +' ');

}

document.write('
');

}

语法:

for(variable in object) variable是一个变量,他是数组的一个元素或对象的一个属性statement object是一个对象名

for /in是每次循环去取object内的元素或属性直到取完这个object中的属性或元素。

取数组中的元素:

v ar arr = [1,2,3,4,5,6,7,8,9];

f or(var tmp in arr){

document.write(tmp + '
');

}

有的对象的属性是无法枚举的。

var arr = new Array();

var o = {x:1,y:2,z:3}; 这里是把o 对象中的key复制到arr数组下标为0 1 2的元素中for(a[i++] in o);

break语句:

break语句会使运行的程序立刻退出包含在最内层的循环或退出一个switch语句

for(var i=0;i<10;i++){

if(i==3){

break 循环i表示如果i等于3的话那么就会停止循环。;

}

}

continue 语句:

和break语句使用一样,只不过是跳过当次循环继续下次循环

for(var i=0;i<10;i++){

document.write(i); 0 1 2 35 6789

if(i==4){

continue; 可以用作过滤工能

}

}

var语句:

var语句允许明确的声明一个或多个变量,如

var name_1=value_1,name_2=value_2 声明多个变量使用逗号分隔如果var 变量名;但是没有给值的话那么他的值就是undefined

function语句:

function语句定义了一个javascript函数,它语法如:

function functname([arg1,arg2.........]){

statement

}

只有要调用方法名()时这个function funcname(){}才会被编译

return 语句:

return语句是用于指定函数返回的值。这个值是函数调用表达式的值

语法:

return expression;

在执行return语句后,即使他后面还有其他语句那么其他语句会停止,函数也会被停止。return语句也可以不带任何表达式,用来停止函数继续的执行。注意:如函数内部使用return 后面不跟语句的话,那么就返回undefined

throw语句:

所谓异常(exception)是一个信号,说明发了某种异常或者错误,抛出(throw)一个异常。就是用信号通知发生了错误或异常状况。捕捉(catch)一个异常。就是处理它即采取必要的或适当的动作从异常恢复。

throw语法:

throw expression; expression的值可以是任何类型通常是一个Error对象或Error 子类的一个实例。

function factorial(x){

if(x<0) throw new Error('传递的必须是一个正数');

当x为一个负数时候会抛出一个Error实例异常这个异常只

在浏览器控制台才看得到,当抛出后他会停止正常的程序执行,

跳转到最近的异常处理器。

var f = 10;

for(var i=1; x>1; f*=x,x--){

return f;

}

}

try/catch/finally语句

语句try从句定义异常需要被处理的代码块,catch从句跟随在try块之后,它是在try 块内的某部分发生了异常时调用的语句块,finally块跟随catch从句后,存放清除代码,无论try块中是否发生异常finally块中的代码都会被执行。注意:虽然catch和finally是可选的,但是try块中至少应该有一个catch块或finally块.

function factorial(x){

if(x<0) throw new Error('传递的必须是一个正数');

var f = 10;

for(var i=1; x>1; f*=x,x--){

return f;

}

}

try{

var n = prompt('Plase enter a positive integer');

var f = factorial(n);

alert(n+"!"+f);

}catch(ex){

alert(ex); 这里的ex就是函数体内的throw new Error实例。

}

try、catch、finally执行关系:

不发生异常情况下:通常try代码块执行到尾部,他就会开始执行finally块以便必要的清除操作

发生异常情况下:try中发生了异常,而且存在一个catch语句,控制流会转到catch中然后再到finally中,然后再向上传播最近的异常的catch从句

try从句可以在没有catch从句的情况下和finally从句一起使用,在这种情况下finally 块中只包括清除代码,无论try从句中是否有break语句,continue语句和return语句,这些代码都会被执行。(不管try块中是否有break continue return finally块都会被执行)

with语句(少用或不用)

with语句用于暂时修改作用域链,

with(object)

statement

有效的将object添加到作用域链的头部,然后执行statement再把作用域链恢复到原始状态。可以减少输入量例子:

with(frames[1].document.forms[0]){

name.value=””;

address.value=””;

email.value=””;

}

可以减少为每个成员输入frames[1].document.forms[0] 。

JavaScript入门教程(初学者不可多得的优秀入门教材,通俗易懂,专业术语通俗化)

第 1 章 JavaScript 语言入门 1 为什么学习 JavaScript
提要:Javascript 是学习脚本语言的首选。她兼容性好,绝大多数浏览器均支持 Javascript,而且她功能强大,实现简单方便,入门简单,即使是程序设计新手也可以非常 快速容易地使用 JavaScript 进行简单的编程。
Javascript 是由 Netscape 公司创造的一种脚本语言。为便于推广,被定为 javascript,但 是 javascript 与 java 是两门不相干的语言, 作用也不一样。 作为一门独立的编程语言, javascript 可以做很多的事情,但它最主流的应用还是在 Web 上——创建动态网页(即网页特效)。 Javascript 在网络上应用广泛, 几乎所有的动态网页里都能找到它的身影。 目前流行的 AJAX 也是依赖于 Javascript 而存在的。 Javascript 与 Jscript 也不是一门相同的语言, Jscript 和 vbscript 是微软开发的两种脚本语 言,微软,Netscape 公司以及其他语言开发商为减少 web 开发者的兼容麻烦,所以成立 ECMA , 该组 织 专 门制定 脚 本 语 言的 标 准 和规范 。 ECMA 制 定 的标 准脚 本 语 言 叫做 ECMAScript,Javascript 符合 ECMA 的标准,其实 Javascript 也可以叫做 ECMAScript. Jscript 也 ECMA 的标准, 但用户较少。vbscript 仅局限在微软的用户, Netscape 不支持。 概括地说,JavaScript 就是一种基于对象和事件驱动,并具有安全性能的脚本语言,脚 本语言简单理解就是在客户端的浏览器就可以互动响应处理程序的语言, 而不需要服务器的 处理和响应,当然 JavaScript 也可以做到与服务器的交互响应,而且功能也很强大。而相对 的服务器语言像 asp https://www.360docs.net/doc/ed18778120.html, php jsp 等需要将命令上传服务器,由服务器处理后回传处理结 果。对象和事件是 JavaScript 的两个核心。 JavaScript 可以被嵌入到 HTML 文件中,不需要经过 Web 服务器就可以对用户操作作 出响应,使网页更好地与用户交互;在利用客户端个人电脑性能资源的同时,适当减小服务 器端的压力,并减少用户等待时间。
2 将 JavaScript 插入网页的方法
与在网页中插入 CSS 的方式相似,使用
language="javascript"表示使用 JavaScript 脚本语言,脚本语言还有 vbscript、 jsscript 等,如果没有 language 属性,表示默认使用 JavaScript 脚本。其中的...就是代 码的内容。例如:

js基础知识

Js1k:用1k的代码做出炫目的效果。代码扩写 犀牛书 微信公众号:前端大全 1. ***变量 2. ***数据类型 一.***变量:内存中存储*一个*数据的存储空间,再起一个名字 何时使用:程序中反复使用的数据,都要先保存在变量中,再参与运算 如何使用:声明赋值取值 1. 声明:在内存中创建一个新变量 如何声明:var 变量名; 仅声明,但暂未赋值,默认值为undefined 变量命名:1. 不能以数字开头,仅能包含字母,数字和下划线 2. 不能用保留字:js中已经预先使用的关键字 比如:name X 3. 见名知意 4. 驼峰命名:第一个单词首字母小写, 之后每个单词首字母大写: 比如:backgroundColor,listStyleType 2. 赋值:将等号*右边*的数据,保存到等号*左边*的变量中 如何赋值:变量名=值;il *对已经包含值的变量赋新值,新值会替换旧值* 建议:1. 在声明同时,初始化变量的值 如何在声明同时初始化:var 变量名=值; 3. 取值:只要使用变量名,在运行时,会被自动替换为变量中的值 特殊情况:3种: 1. 只声明,但未赋值的变量,可任意使用 比如:var hb; console.log(hb); //undefined 2. 从未声明的变量,不能使用(取值)! 报错:ReferenceError: XXX is not defined 3. 未声明的变量,却可赋值!——其实和var不一样 强烈建议:必须用var声明变量 ***声明提前:在程序正式*执行前*,都会将var声明的变量提前到*当前脚本块*的顶部集中声明。再开始执行程序。***赋值留在原地*** 常量:一旦初始化,值不能改变的量 何时使用:程序中,一旦定义不可擅自改变的值,都要用常量保存 如何创建:const 常量名=值; 用作常量的名称,都要大写字母 强行修改常量的值,不会报错,但也无法修改成功!

Javascript基础教程

Javascript简介 (2) Javascript简介 (2) 简单的Javascript入门示例 (4) 编写Javascript 代码 (5) 语句(Statements) (5) 语句块(Blocks) (6) 注释(Comments) (7) 表达式(Expressions) (8) 赋值和等于(Assignments and Equality) (9) Javascript常用运算符(Operators) (10) 算术运算符 (10) 逻辑运算符 (11) 赋值运算符 (12) Javascript 循环语句(Javascript Loop Statements) (12) 使用for 循环语句 (13) 使用for...in 循环语句 . (15) 使用while 和do...while 循环语句 (17) 使用break 和continue 语句 (20) Javascript写在哪里 (23) Javascript在之间 (23)

Javascript在之间 (24) Javascript放在外部文件里 (25) Javascript变量(Javascript Variables) (26) 什么是变量? (26) 变量的声明(Declaring Variables) (26) 变量的命名规则 (27) Javascript条件语句(Javascript Conditional Statements) (27) 单项条件结构(if条件语句) (28) 双向条件结构(if...else条件语句) (29) 多项条件结构(switch条件语句) (31) Javascript保留字(Javascript Reserved Words) (32) Javascript未来保留字(Javascript Future Reserved Words) (33) Javascript简介 Javascript简介

JavaScript常用知识点

1、GET和POST的区别,何时使用POST? GET:一般用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,一般在2000个字符 POST:一般用于修改服务器上的资源,对所发送的信息没有限制。 GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值, 也就是说Get是通过地址栏来传值,而Post是通过提交表单来传值。 然而,在以下情况中,请使用POST 请求: 无法使用缓存文件(更新服务器上的文件或数据库) 向服务器发送大量数据(POST 没有数据量限制) 发送包含未知字符的用户输入时,POST 比GET 更稳定也更可靠JavaScript是客户端和服务器端脚本语言,可以插入到HTML页面中,并且是目前较热门的Web开发语言。同时,JavaScript也是面向对象编程语言。 类似的基本题目还包括:JavaScript都有哪些类型?JavaScript是谁发明的?……2、列举Java和JavaScript之间的区别? Java是一门十分完整、成熟的编程语言。相比之下,JavaScript是一个可以被引入HTML页面的编程语言。这两种语言并不完全相互依赖,而是针对不同的意图而设计的。Java是一种面向对象编程(OOPS)或结构化编程语言,类似的如C ++或C,而JavaScript是客户端脚本语言,它被称为非结构化编程。

3. JavaScript和ASP脚本相比,哪个更快? JavaScript更快。JavaScript是一种客户端语言,因此它不需要Web服务器的协助来执行。另一方面,ASP是服务器端语言,因此总是比JavaScript慢。值得注意的是,Javascript现在也可用于服务器端语言(nodejs)。 4、什么是负无穷大? 负无穷大是JavaScript中的一个数字,可以通过将负数除以零来得到。 5、如何将JavaScript代码分解成几行吗? 在字符串语句中可以通过在第一行末尾使用反斜杠“\”来完成 例:document.write(“This is \a program”); 如果不是在字符串语句中更改为新行,那么javaScript会忽略行中的断点。

javascript基础练习题

基础练习题 一、简单Java程序调试 1)以下哪个是Java应用程序main方法的有效定义? A. public static void main(); B. public static void main( String args ); C. public static void main( String args[] ); D. public static void main( Graphics g ); E. public static boolean main( String a[] ); 2) 编译和运行以下代码的结果为: public class MyMain{ public static void main(String argv){ System.out.println("Hello cruel world"); } } A.编译错误; B.运行输出"Hello cruel world"; C.编译无错,但运行时指示没有定义构造方法。 D.编译无错,但运行时指示没有正确定义main方法。 3)下列选项中不属于Java虚拟机的执行特点的一项是: A.异常处理B.多线程C.动态链接D.简单易学 4)不属于Java语言特点的一项是: A.分布式 B. 安全性 C. 编译执行 D.面向对象 5)以下程序的运行结果为: public class Test{ public static void main(String argv[ ]){ System.out.println("x="+5); } } A. 5 B. x=5 C. "x="+5 D. "x="5 6) 以下程序的运行结果为: public class Test{ public static void main(String argv[ ]){ System.out.println("good"+"morning"); } } A. goodmorning B. "good"+"morning" C. good morning D. good+morning 二、Java符号与表达式 1) 现有一个int类型的整数和一个double类型的数进行加法运算,则得到的结果类型为: A.int类型 B. double类型 C. float类型 D. long类型 2)下面程序段的输出结果是:

Javascript基础

表JS基本类型有什么?引用类型有什么? 基本类型:number,string,boolean,undefined,null 引用类型:基本类型以外的都是引用类型,如object/array/function/date等等 关于基本类型与引用类型的区别可以详细看看@Naraku_的这篇文章: [ JS 进阶] 基本类型引用类型简单赋值对象引用 概况起来有这么几个要点: 1.我们无法给基本类型的对象添加属性和方法; var m1 = 123; https://www.360docs.net/doc/ed18778120.html, = 'abc'; console.log(https://www.360docs.net/doc/ed18778120.html,); //输出:undefined 2.基本类型对象的比较是值比较,而引用类型对象的比较是引用比较; var m1 = 123, m2 = 123; console.log(m1 === m2); //输出:true var o1 = {}, o2 = {}; console.log(o1 === o2); //输出:false 3.基本类型对象是存储在栈内存中的,而引用类型对象其实是一个存储在栈内存中的一个堆内存地址。 4.基本类型对象赋值时(执行=号操作),是在栈内存中创建一个新的空间,然后将值复制一份到新的空间里。 5.引用类型对象赋值时(执行=号操作),也是在栈内存中复制一份一样的值,但这个值是一个堆内存地址,所以被赋值的那个对象跟前者其实是一个对象。 var o1 = {}; var o2 = o1; https://www.360docs.net/doc/ed18778120.html, = 'abc';console.log(https://www.360docs.net/doc/ed18778120.html,); // --> abc console.log(https://www.360docs.net/doc/ed18778120.html,); // --> abc o2.age = '123';console.log(o1.age); // --> 123console.log(o2.age); // --> 123 JS中的常见对置对象类

Vue.js基础知识汇总

Vue.js 专注于MVVM 模型的ViewModel 层。它通过双向数据绑定把View 层和Model 层连接了起来。Vue.js和其他库相比是一个小而美的库,作者的主要目的是通过一个尽量简单的API 产生可反映的数据绑定和可组合的视图组件,感觉作者的思路非常清晰。 介绍 vue.js 是用来构建web应用接口的一个库 技术上,Vue.js 重点集中在MVVM模式的ViewModel层,它连接视图和数据绑定模型通过两种方式。实际的DOM操作和输出格式被抽象的方式到指令(Directives)和过滤器(Filters) 在哲学领域内,尽量让MVVM数据绑定API尽可能简单。模块化和可组合性也是重要的设计考虑。vue不是一个全面的框架,它被设计成简单的和灵活的。你可以用它快速原型,或混合和匹配与其他库定义前端堆栈。 Vue。js的API是参考了AngularJS、KnockoutJS Ractive.js Rivets.js。尽管有相似之处,我相信Vue.js提供一个有价值能够让你在现在的一些现有框架中舍取其价值即使你已经熟悉其中的一些术语,建议您通过以下概念的概述,因为你的这些术语的概念可能在Vue.js的下文中有所不同 概念概述 ViewModel 一个对象,同步模型和视图. 在Vue.js中,ViewModels是实例化的Vue的构造器或者是它的子类 var vm = new Vue({ /* options */ }) 这是主要的对象,你会与作为开发人员在使用Vue.js交互。更多细节请参阅Class: Vue. View 用户看到的实际HTML / DOM vm.$el // The View 当使用Vue.js时候,除了自己自定义的指令你几乎不会触碰到DOM的操作,当数据更新后视图的更新将会自动的触发,视图的更新可以很精确的到每一个testNode节点,他们也批处理和异步执行从而提供更好的性能。 Model 这是一个略微修改的Javascript对象 vm.$data // The Model 在Vue.js中,模型只是简单的Javascript对象,数据对象,你能够操控他们的属性和视图模型,观察他们的从而能获取通知后更改。Vue.js在data对象胡总用ES5的getter/setter 把属性转化了,它允许直接操作而不需要脏检查。 data对象在适当的时候会产生突变,所以修改它与通过引用修改vm.$data是一样的效果。这也方便了多个ViewModel实例观察同一块数据。 技术细节请看Instantiation Options: data. Directives 私有的HTML属性是告诉Vue.js做一些关于DOM的处理 <div v-text="message"></div> 这里的div元素有一个v-text的指令,值是message.意思是告诉Vue.js 保持这个div节点的内容与viewMode中的message属性同步 指令可以封装任意DOM操作。例如v-attr 操作一个属性元素,v-repeat克隆基于数组的

最新JavaScript_深度剖析(从入门到精通)

第一讲JavaScript语言概况 第二讲JavaScript基本数据结构 第三讲JavaScript程序构成 第四讲基于对象的JavaScript语言 第五讲创建新对象 第六讲使用内部对象系统 第七讲窗口及输入输出 第八讲WEB页面信息的交互 第九讲实现更复杂的交互 第一讲JavaScript语言概况 Internet时代,造就了我们新的工作和生活方式,其互联性、开放性和共享信息的模式,打破了传统信息传播方式的重重壁垒,为我们带来了新的机遇。随着计算机和信息时代的到来,人类社会前进的脚步在逐渐加快,每一天都有新的事情发生,每一天都在创造着奇迹。随着Internet技术的突飞猛进,各行各业都在加入Internet的行业中来。无论从管理方面,还是从商业角度来看,Internet都可以带来无限生机。通过Internet,可以实现地区、集体乃至个人的连接,从而达到一种“统一的和谐”。那么怎样把自己的或公司的信息资源加入到WWW 服务器,是广大用户日益关心的问题。采用超链技术(超文本和超媒体技术)是实现这个目标最简单的、最快速的手段和途径。具体实现这种手段的支持环境,那就是HTML 超文本标识语言。通过它们可制作所需的Web网页。 通过超文本(Hyper Text)和超媒体(Hyper Media)技术结合超链接(Hyper link)的链接功能将各种信息组织成网络结构(web),构成网络文档(Document),实现Internet上的“漫游”。通过HTML符号的描述就可以实现文字、表格、声音、图像、动画等多媒体信息的检索。 然而采用这种超链技术存在有一定的缺陷,那就是它只能提供一种静态的信息资源,缺少动态的客户端与服务器端的交互。虽然可通过CGI (Common Gateway Interface)通用网关接口实现一定的交互,但由于该方法编程较为复杂,因而在一段时间防碍了Internet技术的发展。而JavaScript的出现,无凝为Internet 网上用户带来了一线生机。可以这样说,JavaScript的出现是时代的需求,是当今的信息时代造就了JavaScript。 JavaScript的出现,它可以使得信息和用户之间不仅只是一种显示和浏览的关系,而是实现了一种实时的、动态的、可交式的表达能力。从而基于CGI静态的HTML页面将被可提供动态实时信息,并对客户操作进行反应的Web页面的取代。JavaScript脚本正是满足这种需求而产生的语言。它深受广泛用户的喜爱的

javaScript重点知识总结

1、JavaScript 显示数据 JavaScript 可以通过不同的方式来输出数据: 使用window.alert()弹出警告框。 使用document.write()方法将内容写到HTML 文档中。 使用innerHTML写入到HTML 元素。 使用console.log()写入到浏览器的控制台。 实例: document.getElementById("demo").innerHTML = "段落已修改。"; document.write("

这是一个标题

");//write可以直接写入格式! 2、JavaScript 数据类型 var length = 16; // Number 通过数字字面量赋值var points = x * 10; // Number 通过表达式字面量赋值var lastName = "Johnson"; // String 通过字符串字面量赋值var cars = ["Saab", "Volvo", "BMW"]; // Array 通过数组字面量赋值var person = {firstName:"John", lastName:"Doe"}; // Object 通过对象字面量赋值 var cars=new Array(); cars[0]="Saab"; cars[1]="Volvo"; cars[2]="BMW"; 3、JavaScript事件

HTML 事件可以是浏览器行为,也可以是用户行为。 以下是HTML 事件的实例: HTML 页面完成加载。 HTML input 字段改变时。 HTML 按钮被点击。 右图是常见的事件(前面都有on) 事件有三种写法,举onclick为例: //后面再写函数实现方式。 4、JavaScript 字符串 var carname = "Volvo XC60"; var character = carname[7]; //字符串的索引从0 开始 JavaScript本身对单引号还是双引号没有区别。一般都用双引号,两个都存在时,再考虑。

JavaScript基础

Javascript基础 1.功能 在客户端IE 执行 用来与用户交互 数据检查、控制 控制Browser 的页面方式 2.基本命令 var 定义变量 alert 生成一个独立的小窗口,称作对话框,并用它来显示一条信息和一个“确定”按钮!当显示这个对话框时,暂停程序的 执行。 confirm 确认选择对话框用于确定用户某个Y es/No风格问题的回答。这种风格的对话框中显示一个问号和两个按钮:“确定” 和“取消”。当用户单击了“确定”按钮Confirm()方法返回 true;否则返回false。 If , else For Less than (<) Greater than (>) Not (!) Not equal (!=) Equals (==)

Logical AND (&&) Logical OR (||) Is NOT a Number (isNaN ) Split 将string对象字符以某个符号分开隔开 3.属性 document properties 文档对象,描述当前窗口或指定窗口对象的文档。它包含了文档从到的内容。 document.getElementById document.getElementById("id1").value //获取或设置id1的值 getElementsByTagName getElementsByName("test") 是把name属性为test的所有元素取出来放在一个集合里返回 getElementsByTagName ('INPUT') 是把所有的文本框、单选、复选、按钮等取出来放在一个集合里返回 Object properties Obj.tagName Obj.className Obj.type Obj. checked Obj. value

JAVASCRIPT从入门到精通读书笔记

《JavaScript从入门到精通》读书笔记 今年的学习计划要读的书是《JavaScript权威指南》,里面内容比较有深度,所以决定买了比较好理解的《JavaScript从入门到精通》开始学习。 此书前半部分还是比较基础,平时工作中都能用得到,后半部分涉及到了Ajax、本地数据存储、离线应用和canvas图形等比较高级的用法。 首先主要介绍了JavaScript的发展历史版本变化,了解一下就可以。 初次使用JavaScript,重点讲了JavaScript的”字符串。例如。浏览器在加载如下代码就会产生一个错误。”); } Hi(); 错误原因:当浏览器解析到字符串””时,会结束JavaScript代码段的执行。解决方法: 使用转义字符把字符串‘’分成两部分来写就不会造成浏览器的误解。 代码测试和错误处理,理解浏览器的不同内核和代码不同的兼容性,在不同浏览器代码报错的时候会有不同的调试方法,学会使用浏览器的调试器对网页开发效率会有很大的提高。现在主流的浏览器是Chrome、Firefox、Safari等。 JavaScript的基本语法和各种变量,各种数据类型及各种数据类型的转换。 重点:避免变量污染 Var foo = function(){ Var a = 1, b = 2; Var bar = function(){ Var b = 3, c=4, //a= 1,b =3, c=4 a+=b + c; // a=8, b=3, c=4 }; //a=1, b=2, c = undefined bar(); //a= 21,b=2,c= undefined } JavaScript运算符的使用。JavaScript定义了51个运算符,主要分为一下几大类,位运算符、算术运算符、逻辑运算符、关系运算符、赋值运算符、对象炒作运算符和其他运算符。设计程序结构。程序都是由一个或多个语句组成的集合,语句表示一个可以执行的命令。用来完成特定的任务。大部分语句用于流程控制,在JavaScript中提供了if条件判断语句、switch多分枝语句、for循环语句、while循环语句、do/while循环语句、break语句、continue语句等7种流行控制语句。

JavaScript API入门指导

JavaScript API入门指导 天地图有限公司 2014年1月

Web API介绍 天地图Web API是一套由JavaScript语言编写的应用程序接口,它能够帮助您在网站中制作各种类型、行业的地图应用,还可以使地图功能够以模块化集成在不同类型的系统应用中。 面向用户 天地图Web API面向的读者是有一定JavaScript编程经验的读者,此外,读者还应该对地图产品有一定的了解。初级程序员通过1-2天的学习,即可掌握API的使用。 获取API 地图API是由JavaScript语言编写的,您在使用之前需要通过 9. 防止被人frame 10. 网页将不能被另存为 11. 12.删除时确认 删除 13. 取得控件的绝对位置 //javascript //VBScript