数据类型
在JavaScript中定义变量时不需要指定类型,在运算时JavaScript能自动转换数据类型。但还是要了解JavaScript的数据类型。
数值
JavaScript包含三种基本的数据类型:数值、字符串和布尔型。
使用toString()方法可以把数值转换为字符串。
使用toString()方法把数值100转换为字符串,使用typeof()方法验证转换后的数据类型
var a = 100;
var b = a.toString();
alert(typeof(b));
还可以将数值与字符串相加,就可以将数值转换为字符串
var a = 100;
var b = a + "";
alert(typeof(b));
字符串
字符串由Unicode字符、数字、标点符号等组成的字符序列,字符串处必须使用单引号或双引号包括起来。单引号也可以包含双引号,双引号也可以包含单引号。所有字符串应该在同一行书写。
字符串赋值方式
var str = "字符串"; //简单的字符串
var str = "'javascript'和'java'"; //包含单引号的字符串
var str = '<meta charset="utf-8">'; //HTML字符串
使用parseInt()和parseFloat()方法可以把字符串转换为数值
var str = "123.30";
var a = parseInt(str); //返回值123
var b = parseFloat(str); //返回值123.3
也可以让字符串与1相乘,就可把字符串转换为数值
var str = "123.30"
var a = str * 1;
alert(typeof a); //返回number
布尔型
布尔型只包括两个值true与false。布尔值大多用在逻辑运算、比较运算中和条件语句中。
将值转换为布尔类型,在值的前面增加两个感叹号。
var a = 100;
var c = !!a; //把变量a转换为布尔值
alert(c); //返回值为true
alert(typeof c); //返回boolean
将布尔值转换为字符串
var b = false;
a = a + ""; //值为true
b = b + ""; //值为false
将布尔值转换为数值
var a = true;
var b = false;
a = b * 1; //值为1
b = b * 1; //值为0
注:这些值的布尔值都是false
- 0
- NaN
- ’ ’
- false
- null
- undefined
函数
函数构成了JavaScript源代码的主体
定义函数
定义函数有两种方法
function语句声明函数
Function对象构造函数
使用function定义函数
法1:命名函数
function h(){
//函数体
}
法2:匿名函数
var h = function(){
//函数体
}
使用Function对象构造函数
var function_name = new Function(arg1, arg2, ..., argN, function_body)
Function()所有的参数必须是字符串
var say = new Function("name", "say", "document.write('<h1>' + name + ': ' + say + '</h1>');");
say("张三", "Hello!")
在实际应用中使用function比Function构造函数简单,并且更高效。
var say = function(name, say){
document.write('<h1>' + name + ' : ' + say + '</h1>');
}
say("张三", "Hello!")
调用函数
调用函数使用小括号运算符来实现。在括号运算符内部可以包含所有多个参数列表,参数之间通过逗号进行分隔。
function f(){
return "Hello,World!";
}
document.write(f());
函数的返回值没有任何类型限制,它可以返回任意类型的值。
函数参数
参数分为两种形参和实参
形参:定义函数时,传递给函数的参数,被称为形参,形式上的参数
实参:当函数被调用时,传递给函数的参数,这些参数被称为实参
function add(a,b){ //形参a,b
return a + b;
}
alert(add(10,20)); //实参10,20
函数形参的数量可以使用函数的length属性获取
注:当形参大于实参时,多出的形参值为undefined;如果实参大于形参,多出的实参就无法被形参变量访问,就会被忽略掉。
传递三个实参值,函数自动忽略掉第三个实参的值
function add(a,b){
return a + b;
}
alert(add(1,2,3)); //第三个实参被忽略掉,结果为3
预防用户随意传入参数,可以在函数体内检测函数的形参和实参是否一致,如果不一致可以抛出异常,如果一致正常计算。
function add(a, b){
if(add.length != arguments.length)
throw new Error("实参与形参不一致,请重新调用函数!");
else
return a + b;
}
try{
alert(add(2));
}
catch(e){
alert(e.message);
}
函数应用
匿名函数
匿名函数就是没有名称的函数,当只需要一次性使用函数时,使用匿名函数会更加有效率。
var z = function(x, y){
return (x + y) / 2;
}(23, 35)
函数作为值
函数可以作为值赋予给其他变量
var a = function(x,y){
return (x+y)/2;
}
alert(a(12, 33));
函数作为参数
函数也可以作为参数传递给另一个函数,也可以作为返回值。
var a = function (f, x, y){
return f(x, y);
};
var b = function(x, y){
return x + y;
};
alert( a(b, 3, 4));
函数作为表达式
var a = function(x){
alert(x);
}
a(50);
(function(x) {
alert(x);
})(50);
闭包函数
闭包函数时一个拥有许多变量和绑定了这些变量的环境的表达式。闭包函数就是外部函数被调用后,它的变量不会消失,仍然被内部函数所使用,而且所有的内部函数都拥有外部函数的访问权限。
function a(){
var n = 0;
function b(m){
n = n + m;
return n;
}
return b;
}
var b = a(); //调用外层函数,返回内部函数
document.write(b(3));
document.write("<br>");
document.write(b(3));
document.write("<br>");
document.write(b(3));
document.write("<br>");
document.write(b(3));
人生漫漫其修远兮,网安无止境。
一同前行,加油!