JavaScript 数据类型:
字符串、数字、布尔、Null、Undefined
更细分为:数组、对象、
字符串:字符串要用单引号或者双引号引起来。
数字:直接写数字不需要引号。
变量的命名规则:
1.变量名区分大小写,允许包含字母、数字、美元符号($)和下划线,但第一个字符不允许是数字,不允许包含空格和其他标点符号
2.变量命名长度应该尽可能的短,并抓住要点,尽量在变量名中体现出值的类型
3.尽量避免使用没有意义的命名
4.禁止使用JavaScript关键词、保留字(保留字是将会成为关键词的字)
5.变量名命名方法常见的有匈牙利命名法、驼峰命名法和帕斯卡命名法、下划线法
6.格式 var变量
Null类型: null->0 true->1
undefined->NaN NAN不能等于任何数,不能和自身比较, undefined可以和自己比较。
!写非的时候占了一个等于号位置。数字类型不能写null。
强制转换的例子:
其他类型转换成布尔类型false的有
var test=Boolean(0);
test=Boolean(-0);
test=Boolean(NaN);
test=Boolean(undefined);
test=Boolean(' ');
test=Boolean(0.0);
test=Boolean('0');
隐式转换的例子:
其它类型转换成字符串型
document.write(undefined);//'undefined'
document.write('<br/>');
document.write(null);//'null'
document.write('<br/>');
document.write(NaN);//'NaN'
document.write('<br/>');
document.write(123);//'123'
document.write('<br/>');
document.write(true);//'true'
document.write('<br/>');
document.write(false);//'false'
document.write('<br/>');
alert(1+"1");//拼接字符串
alert('2'+12);//拼接字符串
var a;//undefined->false
//typeof得到变量的类型
//alert(typeof a);
a=null;//null->false
//0 0.0 NaN->false
a=0;
a=0.0;
a=0/0;
//NaN
a=NaN;
//alert(Number(NaN));
//a='';//空字符串->false
//a='0';
a='a';
//alert(a==b);
alert('真');
}else{
alert('假');
}
var b=undefined;//undefined->NaN
b=null;//null->0
b=true;//true->1
b=false;//false->0
//alert(1+b);
var c='12';//'12'->12
c='3king';//'3king'->NaN
c='true';
//alert(2*c);
c='33';
//alert(typeof c);
c=c*1;
alert(typeof c);
test=parseInt('123');
console.log(typeof test); //123
test=parseInt('234',0);
console.log(test); //234
test=parseInt('0xabcdef'); ( 0x开头是16进制)
test=parseInt('012344');
test=parseInt(45,16);
test=parseInt('356k8i23ng');
test=parseInt('true');
test=parseInt(true);
test=parseInt(' 35 6 a ');
test=parseInt('44.666');
console.log(test);
test=parseFloat('123.34.9abc');
test=parseFloat('123');
test=parseFloat('sdf');
test=parseFloat(' 2e8a');(e是10,几个e就是10的几次方)
alert(test);
进阶:多层嵌套for循环 最外层循环一次 里层整套循环 以此类推
基本格式(if 与 循环的结合) :while(循环条件){ 循环语句 }
执行循环:1判断是否符合循环条件 2符合循环语句执行循环条件
do......while循环(无条件会执行一次循环)
基本格式:do{ 循环语句}while(循环条件)
执行循环:1无条件执行一次循环语句 2判断循环条件来决定是否开始1次以后的循环
跳出循环的两个命令
1.break :跳出循环
2.contione :跳出本次循环
循环体;}
document.write('hello meizi');
}while(false);
document.write('<hr/>');(先显示在判定)
case 值1:
执行的代码段;
break;
case 值2:
执行的代码段;
break;
...
default:
执行的代码段;
break;
严格类型比较)
js函数:
1.函数名称严格区分大小写。
2.函数名称重复会产生覆盖。
3.(.length)控制着对象的长度(JavaScript 中的所有事物都是对象)
//实现默认参数的形式
// function calc4(x,y){ (false+false=0)
x=x||0;
y=y||0;
return x+y;
}
function calc4(x,y){
if(x===undefined){
x=0;
}
y=y===undefined?0:y;
return x+y;
}
//alert(calc4());
//alert(calc(1,3,4)); //控制着对象的长度
function calc(x,y){
//return arguments;
// alert(arguments[0]);
// alert(arguments.length);
x=arguments[0]?arguments[0]:0;
y=arguments[1]?arguments[1]:0;
return x+y;
}
//alert(calc());
//alert(calc(1,2));
//可变参数形式的函数
function test(){
var paramsNum=arguments.length;//得到传入参数的个数
var sum=0;
for(var i=0;i<paramsNum;++i){
sum+=arguments[i];
}
return sum;
}
//alert(test(1,2,3,4,5,6));
function test1(){
var paramsNum=arguments.length;
var max=0;
for(var i=0;i<=paramsNum-1;i++){
if(arguments[i]>max){
max=arguments[i];
}
}
return max;
}
alert(test1(123,3432,23456,445643));(只取一个最大的值 445643)
//变量作用域 (window是最大的全局变量)
var x=1;
function test(){
document.write('函数体内x的值为:'+x+'<br/>'); //undefined,x值取下面的,但是取不到值
var x=19;
document.write('函数体内对x重新赋值,此时x的值为:'+x+'<br/>'); //19
}
document.write('函数体外x的值为:'+x+'<br/>'); //1
test();
document.write('x的值为:'+x+'<br/>'); //1
//document.write('<hr color="red"/>');
/* function test(){
var x=1;
alert(x);
}
test();
alert(x); //取不到变量,报错*/
function test(){
y=5;
alert(y);
}
// test();
// alert(y);
var x=1,y=2;
function calc(x,y){
document.write('a的值为'+a+'<br/>');//undefined
document.write('函数体内x的值为:'+x+'<br/>'); //1
document.write('函数体内y的值为:'+y+'<br/>'); //2
var x=0,y=6;
z=x+y;
x=x+y;
var a=198;
document.write('a的值为:'+a+'<br/>'); //198
document.write('x的值为:'+x+'<br/>'); //6
return z;
}
alert(calc(x,y));
//alert(x+'-'+y+'-'+z);
var a=1,b=2;
function test1(){
var a=5,b=10;
return a+b;
function test2(){
var a=11,b=22;
return a+b;
}
alert(test1());
alert(test2());
alert(a+'--'+b);
function calc(x,y){
return x()+y();
}
function test1(){
return 3;
}
function test2(){
return 5;
}
//alert(calc(test1,test2));
//alert(calc(function(){return 5;},function(){return 10;})); //匿名函数
function say (value) {
alert(value);
}
//alert(say);
say('hi js.');
ECMAScript 闭包:
闭包:指的是词法表示包括不被计算的变量的函数,也就是说,函数可以使用函数之外定义的变量。
例子:
var sMessage = "hello world";
function sayHelloWorld() {
alert(sMessage);
}
sayHelloWorld();
创建对象:
\t 的意思是 横向跳到下一制表符位置,\n是换行
1.通过对象字面量的形式创建对象
注意:要用逗号隔开,
两种方式写:横着写,竖着写(好看)
var obj={};//没有任何属性的对象
//alert(typeof obj);
var obj1={x:1,y:2,z:3};
var obj2={
'x':1,
"y":2,
username:'king',
'for':'Javascript关键字必须放到引号之间',
'first-name':'queen',
married:true,
test:null,
test1:undefined,
salary:12.3,
person:{
username:'king',
age:12,
addr:'北京'
}
};
2.通过new Object()创建对象
var obj3=new Object();//创建一个空对象,{}
var arr=new Array();//空数组,[]
var date=new Date();//日期时间对象
var reg=new RegExp('js');//创建正则对象
3.通过构造函数的形式创建对象
function Test(){
}
var obj4=new Test();
function Test1(num1,num2){
this.n1=num1;
this.n2=num2;
}
var obj5=new Test1(5,6);
alert(typeof obj5);
alert(obj5 instanceof Test1);
4.通过Object.create()创建对象
var obj6=Object.create({x:1});
var obj7=Object.create(null);
创建一个普通的空对象
var obj8=Object.create(Object.prototype
Number string
number
Js只有一种数字类型(包括整型,浮点型)
极大或极小的可用科学计数法来表示。(7.7123e+1)
所有js数字均为64位
Js所有的数字都存储为浮点型
小数的最大位数是17位
0开头的为八进制 0x开头的为16进制
// var str='king';
// console.log(typeof str); //string
// var strObj=new String('king');
// console.log(typeof strObj); //obj
// console.log(strObj[0]); // 数组的第一位是k
// console.log(strObj.length); //4
// console.log(strObj.valueOf()); //king 返回原始值
// console.log(strObj.toString()); //king
// console.log("nana"[0]); //n
// console.log("helloworld".length); //10 字符串空格也计算
// var str=String('1234');
// str=String(true);
// str=String({x:1}); /ar obj={}; 字面量
// str=String(null); //输出为空
// console.log(str);
// var str='king';
/arAt()根据下标返回指定的字符
//console.log(str.charAt(0)); //k
// console.log(str.charAt(1)); //i
// console.log(str.charAt(2)); //n
//console.log(str.charAt(3)); //g
//console.log(str.charAt(10)); //当定义的字符串中没有第10位显示为空。和indexof 检查不到的值不一样 为-1
/ar str='abcdef';
/arCodeAt():返回指定字符的ASCII码值
//console.log(str.charCodeAt(0));
//console.log(str.charCodeAt(100)); //没有第100位 为null 没有ascii值
//console.log(str.charCodeAt(-123)); //同理
//fromCharCode():根据指定的ASCII放回对应的字符
// console.log(String.fromCharCode(97)); //a
// console.log(String.fromCharCode(65,66,67)); // ABC
//concat():连接字符串
// var str='hello ';
// console.log(str.concat('world'));
// console.log(str.concat('world ','!'));
//字符串搜索相关
/ar str='this is a test';
//console.log(str.indexOf('t')); //0
//console.log(str.indexOf('is')); //2
//console.log(str.indexOf('Is')); //没有出来-1
//console.log(str.indexOf('i')); //2
//console.log(str.indexOf('i',3)); //5 后面的3是规定字符串从第几个开始 检索
//通过indexOf()可以统计一个字符在指定字符串中出现的次数
// var str='sssssdlkfjlwk34jlksdfjlksjdlf234';
// var count=0;
// var pos=str.indexOf('s'); //从0开始
// while(pos!=-1){
// count++;
// pos=str.indexOf('s',pos+1);
// }
// console.log(count);
//lastIndexOf():最后一次出现的位置
/ar str='this is a test';
//console.log(str.indexOf('is')); //2
//console.log(str.lastIndexOf('is')); //5
//比较两个字符串
// console.log('h'.localeCompare('j'));//-1 j的ascii码为106 后面大的取反值
// console.log('z'.localeCompare('a'));//1 后面的值小为正值
// console.log('a'.localeCompare('a'));//0 相等
// console.log('b'.localeCompare('B'));//1 后面的值小为正值
//match():找到一个或多个正则表达式的结果
/ar str='this is a test of king show time';
/ar re=/IS/i;
//console.log(str.match(re)); //index 为下标从1开始
/ar str='QWERTYUIOPASDFGHJKLZXCVBNMqwertyuioasdfghjkzxcvbnm';
//console.log(str.match(/[a-f]/ig)); //i 是不分别大小写 g是全局
/arch():根据正则表达式进行搜索
/ar str='this is a test';
//console.log(str.search(/is/));
//console.log(str.search(/IS/)); 和indexof()没有为-1
//console.log(str.search(/IS/i));
/ar str='this is a test';
/ar newStr=str.replace(/IS/ig,'!'); //两个is都替换
// console.log(newStr);
// var str="2015-09-26";
/ar newStr=str.replace(/(\d{4})-(\d{2})-(\d{2})/,"$2/$3/$1"); //查找数字然后在按$顺序排列
//console.log(newStr);
/ar str="2015-09-25";
/ar newStr=str.replace(/(\d{4})-(\d{2})-(\d{2})/,func);
//function func(match,d1,d2,d3){
///return [d2,d3,d1].join('/');
//}
//console.log(newStr);
//截取字符串
/ar str='abcdef';
//console.log(str.slice(2));
//console.log(str.slice(0,2)); //2结束时不读
//console.log(str.slice(-3)); //-3开始
//console.log(str.slice(-4,-2)); //-2 左开右闭
//console.log(str.slice(0,-1));
//console.log(str.substr(3));
//console.log(str.substr(0,4));
//split()将字符串拆分成数组
/ar str='2015-08-12';
/ar arr=str.split('-');
// console.log(arr);
/ar str='a b c d e f';
// var arr=str.split(' ');
// console.log(arr);
//arr=str.split(' ',2); //出来是a b
//console.log(arr);
//字符串大小写相关
// console.log("KING".toLowerCase()); //小写
// console.log("KING".toLocaleLowerCase()); //本地小写
// console.log('nana'.toUpperCase());
// console.log('nana'.toLocaleUpperCase());
//trim() //移除字符串两侧的空格
/ar str=' abc ';
//alert("!"+str+"!");
//alert("!"+str.trim()+"!");
//产生锚点
/ar str="this is a test";
// document.body.innerHTML=str.anchor('contents_anchor'); //写进body的html里面
//<a name="contents_anchor">this is a test</a>
//产生链接
/ar title='this is of king show time';
/ar url='http://phpfamily.org';
//document.write('Click Me to Visit My Blog'+title.link(url));
Math(算数)对象:
console.log(Math.E); //返回算术常量 e,即自然对数的底数(约等于2.718)。
console.log(Math.PI); //返回圆周率(约等于3.14159)。
console.log(Math.abs(-12)); //绝对值 12
console.log(Math.ceil(12.3)); //向上取整 13
console.log(Math.floor(14.8)); //向下取整 14
console.log(Math.round(1234.5678)); //取整数四舍五入 1235
console.log(Math.pow(2,3)); //2的3次幂 x 的 y 次幂。
console.log(Math.sqrt(4)); //返回数的平方根
console.log(Math.ceil(Math.random()*10)); //1-10的随机数 random 0-1之间的随机数不包括0和1
console.log(Math.max(12,3423,45345,6435655345)); //最大的数 6435655345
console.log(Math.min(-234,23,2346,324536)); //最小的数 -234
正则表达是:(var patt1=new RegExp("e");):
例子:var patt1=new RegExp("e");
document.write(patt1.test("The best things in life are free")); (如果有显示trun如果没有显示flase)
{
result=patt1.exec("The best things in life are free");
document.write(result);
} //写出这串字符串里的所有个数,没有的会显示出null
^ 表示匹配输入的开始
$ 表示匹配输入的结束
* 一个表达式的多次或0次
+ 匹配前面一个表达式一次或多次
? 匹配前面一个表达式0次或者一次 ???
. 匹配除换行符之外的任何单个字符
[abc] 查找方括号之间的字符
[^abc] 查找不在方括号之间的字符
(a|b|c) 查找任何指定选项
\w 查找单词字符
\W 查找非单词字符
\d 查找数字字符 \D 查找非数字字符
\s 查找空字符 \S 查找非空白字符
数组:
有两种向数组赋值的方法(你可以添加任意多的值,就像你可以定义你需要的任意多的变量一样)。
1.var mycars=new Array()
mycars[0]="Saab"
mycars[1]="Volvo"
mycars[2]="BMW"
var mycars=new Array(3)(也可以使用一个整数自变量来控制数组的容量)
mycars[0]="Saab"
mycars[1]="Volvo"
mycars[2]="BMW"
2.var mycars=new Array("Saab","Volvo","BMW")(如果你需要在数组内指定数值或者逻辑值,那么变量类型应该是数值变量或者布尔变量,而不是字符变量。)
document.write(mycars[0])
输出(saab)
修改:
mycars[0]="Opel";
现在,以上代码:
document.write(mycars[0]);
将输出:(Opel)
var arr=[];
arr[0]='a';
arr[1]='b';
arr.shift(); //开头删除
arr.push('d','e','f',12,34); //尾部添加
console.log(arr);
var res=arr.pop(); //尾部删除
console.log(res);
console.log(arr);
arr.unshift(1,2,3,4,5); //开头添加
console.log(arr);
res=arr.shift();
console.log(res);
console.log(arr);
var arr=['a','b','c','d'];
delete arr[0]; //位置保留
console.log(arr);
console.log(arr.length);
浙公网安备 33010602011771号