javascript

引入与注释

可放在head中,也可放在body中,也可作为外部文件引入【<script type="text/javascript" src="xxx.js"></script>】。

块注释:/* ...*/。单行注释://

基础语法(标识符/变量)

标识符:指变量、函数的名字,或者函数的参数名。

标识符可以是一个或多个字符组合:

1、第一个字符必须是一个字母、下划线或美元符,不能是数字。

2、其他字符可以是字母、下划线、美元符或数字。

3、不能将关键字、保留字、true、false和null作为标识符。

变量:定义变量时,使用var操作符,后面跟变量名。

数据类型

undefind:表示变量不含有值。

null:可以通过变量的值设置为null来清空变量。

string:字符串是存储字符的变量,字符串可以是引号中的任意文本

number:数字类型。

boolean:布尔(逻辑)类型只能有两个值:true/false(常用于条件测试).

object:对象由花括号分隔。对象的属性以名称和值对的形式(name:value)定义。

typeof 可以检测变量类型。如:var x; typeof x;类型为undefind.

数据类型的相互转换

string():将数据转换为字符串类型。

number():将数据转换数字类型

number('php');//NaN
number('123');//123
number("");//0
number(null);//0
number(undefind);//NaN
number(true);//1
number(false);//0

parselnt():只取整数部份,忽略小数部份(从第一个字符开始查找,直到非数字截止,并返回找到的数字)

parselnt('123.21php');//123

parseFloat():不忽略小数部份。

parseFloat('123.23php');//123.23

boolean():转换为布尔型

运算符

算数运算符:(+、-、*、/、%【模】、++【累加】、--【递减】)

其中+号既是运算符也是字符串连接符,两端都是数字时是运算符。

赋值运算符:(==、+=、-=、*=、/=、%=)

比较运算符:(==【值等于】、===【全等于(值和类型都相等)】、!=、>、<、>=、<=)

逻辑运算符:(&&【且】、||【或】、!【取反】).&&左右都为真,为真。||左右有一个为真,为真。

数组类型

创建数组:

var a=new array('you','me');//['you','me']

var a=array('b','c');//['b','c']

var a=['b','c'];//['b','c']

字符串操作方法

charAt():可返回指定位置的字符
IndexOf():可返回某个指定的字符串值在字符串中首次出现的位置。如:IndexOf('f',2);从第二个开始,大小写敏感,如果未查询到则返回-1.
replace():用于在字符串中用一些字符替换另一些字符(或替换一个与正则表达式匹配的子串),返回新的字符串,如:var a="hello world!";a.replace(/hello/,'你好');//你好 world!
concat():用于连接两个或多个字符串
substr(start,length):在字符串中抽取从start下标开始的指定数目的字符(也可以是负值)
substring(start,stop):用于提取字符串中介于两个指定下标之间的字符。

数组操作方法

concat():连接两个或多个数组,并返回结果。
join():把数组的所有元素放入一个字符串,元素通过指定的分隔符进行分隔。如:var a=[1,2,3,4,5];a.join('/');//"1/2/3/4/5"
sort():对数组的元素进行排序。
reverse():颠倒数组中元素的顺序。
splice():删除元素。返回被删除元素。如果有第三个参数,则将第三个参数添加到数组中。如:var a=[1,2,3,4]; a.splice(1,2,'php');//[2,3],删除从下标为1开始的两个元素。输出a,为[1,'php',4]
slice():从某个已有的数组返回选定的元素。
toString():把数组转换为字符串,并返回结果。
pop():删除并返回数组的最后一个元素。
push():向数组的末尾添加一个或多个元素,并返回新的长度。

日期操作方法

getDate():从date对象返回一个月中的某一天
getDay():从date对象返回一周中的某一天
getMonth():从date对象返回月份
getFullYear():从date对象以四位数返回年份
getHours():返回date对象的小时(0-23)
getMinutes():返回date对象的分钟(0-59)
getSeconds():返回date对象的秒数(0-59)
getMilliseconsa():返回date对象的毫秒(0-999)
setDate():设置date对象中月的某一天(1-31)
setMonth():设置date对象中月份(0-11)
setFullYear():设置date中的年份(四位)
setTime():以毫秒设置Date对象
。。。。



toString():把date对象转换为字符串
toTimeString():把date对象的时间部份转换为字符串
toDateString():把date对象的日期部份转换为字符串
toUTCString():根据世界时间,将date对象转换为字符串
toLocaleTimeString():根据本地时间格式,将date对象的时间部份转换为字符串
toLocaleDateString():根据本地时间格式,将date对象的日期部份转换为字符串
toLocaleString():根据本地时间格式,将date对象转换为字符串

条件控制语句if..else

if语句只有条件为真时才会执行,else语句条件不为true时执行。

var a=7;
if (a < 8) {
    x='yes';
} else {
    x='no';
}

switch语句

var day=new Date().getDay();
switch (day)
{
case 1:
    x='';
    break;//匹配成功后跳出
case 2:
    x='';
    break;//跳出
case 3:
    x='';
    break;//跳出
case 4:
    x='';
    break;//跳出
case 5:
    x='';
    break;//跳出
case 6:
    x='';
    break;//跳出
case 0:
    x='';
    break;//跳出
default://全都不匹配时执行
    x='';
    break;
}

for循环

语法:

for (初始值;条件;步长;) {
    被执行的代码块
}

var a=0;
for (var i=0;i<9;i++) {
   a++;
   document.write(a);
}

//1,2,3,4,5,6,7,8

while循环

一般用于不知道循环次数的情况,while是一种先判断后运行的循环语句。

语法:

while (条件) {
    需要执行的代码块
}


例:
var a=1;
while (a<=5) {
    document.write(a);
    a++;
}

do while循环

结构为直到型循环,用于不知道循环次数的情况。每执行一次循环体,都要判断一下条件表达式。先执行循环体内语句,然后判断条件,若为真则进行下次循环,否则终止循环。表达式为假时也会执行一次循环体内语句。

语法 :

do {
   循环体;
} while (条件);


例:
var a=1;
do {
    document.write('a');
    a++;
} while (a <= 5);

break和continue

break:用于跳出循环;

continue:用于跳出循环中的一个迭代;

for (i=0;i<10;i++) {
    if (i==3) {break;}//循环终止
    if (i==3) {continue;}//跳过符合当前条件循环
    document.write('i');
}

函数

定义了一次,但可以多次使用的代码块。

声明:
function 函数名()
{
   函数体
}

例:
//不带参数函数
function hello()
{
    document.write('php');
}

hello();//调用函数


//带参数函数
function box(参数1,参数2)
{
    执行代码
}

return

function a(x)
{
    return x;
}

console.log(a(100));//100

函数表达式

//对象直接量
var a={b:function(x){return x*x;}}
var c=a.b(7);//49

//数组直接量
var x=[function (x) {return x*x},30];
x[0](x[1]);//900

var a=function(x){return x*x;}

变量的作用域

如果在函数内变量前不加var,那么这个变量就是全局变量。

a = 'global';//全局变量
function test()
{
    var b='lobal';//局部变量
    return a+b;
}
test();//globallobal


function test()
{
    b='lobal';//全局变量
    return b;
}

对象

javascript中的所有事物都可以是对象:字符串、数组、数字、函数...,对象是带有属性和方法的特殊数据类型。

内置对象:由ECMAScript规范定义的对象或者类,如:数组、函数、日期和正则表达式都是内置对象。

宿主对象:由javascript解释器所嵌入的宿主环境(如web浏览器)定义的。客户端javascript中表示网页结构的HTMLElement对象都是宿主对象, 既然宿主环境定义方法可以当成普通的javascript函数对象,那么宿主对象也可以当成是内置对象。

自定义对象:由运行中的javascript代码创建的对象

自定义属性:直接在对象中定义的属性

继承属性:在对象的原型对象中定义的属性

//访问对象中的方法
//hello为对象,length是hello对象的属性
var hello= 'hello world';
var x=hello.length;

//indexOf是hello对象的方法
var x=hello.indexOf('l');

对象中的三个属性

原型属性(prototype):用来继承属性,且在实例对象创建之初就已经设置好了。isPrototypeOf():判断是否是原型

1、对象直接量创建的对象使用object.prototype作为它们 的原型

2、通过new创建的对象使用构造函数的prototype属性作为 原型

3、通过object.create()创建的对象使用第一个参数(可为null)作为 原型

var a={x:1};
var b=Object.create(a);
document.write(a.isPrototypeOf(b));//判断a是否是b的原型。

类属性(class)

对象的类属性是一个字符串,用以表示对象的类型信息。

classof():该函数可以返回传递给它的任意对象的类(可以传入任何类型的参数且包括对null和undefind的特殊处理)

function classof(x)
{
    document.write(Object.prototype.tostring.call(x))
}

classof(1);//[object number]

可扩展性

对象的可扩展性用以表示是否可以给对象添加新属性(内置对象和自定义对象都是可扩展的宿主对象,可扩展性是由javascript引擎定义的)

object.isExtensible();判断对象是否是可扩展
object.preventExtensions();将对象转换为不可扩展
object.seal();将对象设置为不可扩展且对象中所有自有属性都设置为不可匹配(封闭对象)
object.freeze();将对象设置为不可扩展,对象中所有自有属性都设置为不可匹配且所有数据属性都设置为只读(严格锁定对象--冻结)
object.isSealed();检测对象是否封闭
object.isFrozen();用来检测对象是否被冻结

对象的常见用法

1、创建(create)

//对象直接量
var empty={}//没有属性的对象
var point={x:0,y:0};//拥有两个属性的对象 

//通过new创建对象
var a=new Object();//创建一个空对象
var d=new Object();//当前时间的date对象

//Object.create()
var obj=Object.create({x:1,y:x});//obj继承了属性x和y
var obj2=Object.create(null);//不继承任何属性和方法

2、设置(set)3、查找(query)

可以通过(.)和([])来获取属性值

//查找
var a=book.a;//得到book的a属性
var name=a.surname;//得到a的surname属性
var title=book['name'];//得到book的name属性

//设置
book.a=2;//给book创建一个名为a的属性
book['name'] = 'surname';//给name属性赋值

4、删除(delete)

delete book.a;//删除book的属性a
delete book['main'];//删除book的main属性

5、检测(test)

var o={x:1}
"x" in o;//返回true,‘x’是o的属性
"y" in o;//返回false,'y'不是o的属性

o.hasOwnProperty('x');//返回true
o.hasOwnProperty('y');//返回false
o.propertyIsEnumerable('x');//返回true
o.propertyIsEnumerable('y');//返回false

6、枚举(enumerate)

//表明是否可以通过for/in循环返回该属性
//for...in语句循环遍历对象的属性
var person={fname:'bill',Iname:'gate',age:23}
for (x in person) 
{
    txt=txt + person[x]
}//for...in循环中的代码块将针对每个属性执行一次


var o={x:1,y:2,z:3};//可枚举的自有属性
    o.propertyEnumerable('toString');///返回false不可枚举
    for (p in o);
    console.log(p);//输出x,y,z


//返回对象中的可枚举属性数组
Object.keys(person);//['fname','lname','age']
Object.getOwnPropertyNames(person);//['fname','lname','age']

对象序列化

序列化对象 :使用JSON作为数据的交换格式

JSON.stringfy();//从一个对象中解析出字符串

JSON.parse();//从一个字符串中解析出JSON对象

var a={x:1,y:2,z:3}
JSON.stringify(a);//"{"x":1,"y":2,"z":3}"
var b=JSON.stringify(a);
JSON.parse(b);//{x:1,y:2,z:3}

//可以计算字符串,eval为全局函数,可以解析JSON文本,然后生成javascript对象
eval('2+3');//5

var a={"fname":"bill","lname":"bate"}
eval('a');//{fname:"bill",lname:"bate"}

number对象

//创建number对象语法
var myNum = new Number(value);
var myNum = Number(value);
参数value是要创建的number对象的数值,或是要转换成数字的值

返回值:
当number()和运算符new一起作为构造函数使用时,返回一个新创建的number对象。如果不用new运算,则会把number()作为一个函数来调用,将会把自己的参数转换成一个原始数值,并返回(如果转换失败,则返回NaN)
 
number对象方法
toString():把数字转换为字符串,使用指定的基数。
toLocaleString():把数字转换为字符串,使用本地数字格式顺序。
toFixed():把数字转换为字符串,结果的小数点后有指定位数的数字。
toExponential():把对象的值转换为指数计数法。
toPrecision():把数字格式代为指定的长度。
valueOf():返回一个number对象的基本数字值。

MAX_VALUE:可表示的最大数值
MIN_VALUE:可表示的最小数值
NAN:非数字值
NEGATIVE_INFINITY:负无穷大,溢出时返回
POSITIVE_INFINITY:正无穷大,溢出时返回该值

精度

整数(不使用小数点或指数计数法)最多为 15 位。

小数的最大位数是 17,但是浮点运算并不总是 100% 准确:
可以通过乘以10或除以10来计算:
<script>
var x;
document.write("<p>仅显示17位: ");
x=12345678901234567890;
document.write(x + "</p>");
document.write("<p>0.2 + 0.1 = ");
x=0.2+0.1;
document.write(x + "</p>");
document.write("<p>可以通过乘以10或除以10来计算: ");
x=(0.2*10+0.1*10)/10;
document.write(x +"</p>");
</script>

八进制和十六进制

如果前缀为 0,则 JavaScript 会把数值常量解释为八进制数,如果前缀为 0 和 "x",则解释为十六进制数。

Math对象

用于执行数学任务。

math对象不像date和string那样是对象的类,因此没有构造函数,所以无需创建,只需把math作为对象使用,就可以调用其所有有属性和方法。

//使用Math的属性和方法
var pi_value=Math.PI;
var sqrt_value=Math.aqrt(15);


math对象属性:
E:返回算术常量e,即自然对数的底数(约等于2.718)
LN2:返回2的自然对数(约等于0.693)
LN10:返回10的自然对数(约等于2.302)
LOG2E:返回2为底的e的对数(约等于1.414)
LOG10E:返回以10为底的e的对数(约等于0.434)
PI:返回圆周率(约等于3.14159)
SQRT1_2:返回2的平方根的倒数(约等于0.707)
SQRT2:返回2的平方根(约等于1.414)

math对象方法:
max(x,y):返回x和y中的最高值
min(x,y):返回x和y中的最低值
pow(x,y):返回x的y次幂
random():返回0-1之间的随机数
round(x):把小数四舍五入为最接近的整数
valueOf():返回math对象的原始值
abs(x):返回数的绝对值

string

在字符串中查找字符串

字符串使用 indexOf() 来定位字符串中某一个指定的字符首次出现的位置,lastIndexOf() 方法在字符串末尾开始查找字符串出现的位置。

内容匹配

match()函数用来查找字符串中特定的字符,并且如果找到的话,则返回这个字符。

替换内容

replace(需要替换的,被替换的) 方法在字符串中用某些字符替换另一些字符。

字符串大小写转换

字符串大小写转换使用函数 toUpperCase() / toLowerCase()

字符串转为数组

字符串使用strong>split()函数转为数组:

<script>
function myFunction(){
	var str="a,b,c,d,e,f";
	var n=str.split(",");
	document.getElementById("demo").innerHTML=n[0];
}
</script>

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值