您的位置:首页 > Web前端 > JavaScript

JavaScript基础语法:数据类型、变量、控制结构、函数、表达式

2016-11-21 20:34 1096 查看
1 数据类型与变量

JavaScript中有5种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和String。还有1种复杂数据类型——Object,Object本质上是由一组无序的名值对组成的。 介于JavaScript是松散类型的,因此需要有一种手段来检测给定变量的数据类型——typeof就是负责提供者方面信息的操作符。对一个值使用typeof操作符可能返回下列某个字符串:

● "undefined"——如果这个值未定义; 

● "boolean"——如果这个值是布尔值; 

● "string"——如果这个值是字符串; 

● "number"——如果这个值是数值; 

● "object"——如果这个值是对象或null; 

● “function”——如果这个值是函数;

Number类型
这种类型用来表示整数和浮点数值,还有一种特殊的数值,即NaN(非数值 Not a Number)。这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。 NaN本身有两个非同寻常的特点。首先,任何涉及NaN的操作(例如NaN/10)都会返回NaN,这个特点在多步计算中有可能导致问题。其次,NaN与任何值都不相等,包括NaN本身。例如,下面的代码会返回false。

alert(NaN == NaN);
//false 

JavaScript中有一个isNaN()函数,这个函数接受一个参数,该参数可以使任何类型,而函数会帮我们确定这个参数是否“不是数值”。isNaN()在接收一个值之后,会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值,例如字符串”10“或Boolean值。而任何不能被转换为数值的值都会导致这个函数返回true。例如:

alert(isNaN(NaN));    //true
alert(isNaN(10)); //false(10是一个数值)
alert(isNaN("10")); //false(可能被转换为数值10)
alert(isNaN("blue")); //true(不能
4000
被转换为数值)alert(isNaN(true)); //false(可能被转换为数值1)


有3个函数可以把非数值转换为数值:Number()、parseInt()和parseFloat()。第一个函数,即转型函数Number()可以用于任何数据类型,而另外两个函数则专门用于把字符串转换成数值。这3个函数对于同样的输入会返回不同的结果。

var num1 = Number("Hello World");    //NaN
var num2 = Number("");//0
var num3 = Number("000011"); //11
var num4 = Number(true);      //1


由于Number()函数在转换字符串时比较复杂而且不够合理,因此

在处理整数的时候更常用的是parseInt()函数。parseInt()函数在转换字符串时,更多的是看其是否符合数值模式。它会忽略字符串前面的空格,直至找到第一个非空格字符。如果第一个字符串不是数字字符或者负号,parseInt()会返回NaN;也就是说,用parseInt()转换空字符串会返回NaN。如果第一个字符是数字字符,praseInt()会继续解析第二个字符,知道解析完所有后续字符或者遇到了一个非数字字符。例如,"1234blue"会被转换为1234,”22.5“会被转换为22,因为小数点并不是有效的数字字符。
如果字符串中的第一个字符是数字字符,parseInt()也能够识别出各种整数格式(即十进制、八进制、十六进制)。为了更好的理解parseInt()函数的转换规则,下面给出一些例子

var num1 = parseInt("1234blue");    //1234
var num2 = parseInt("");   //NaN
var num3 = parseInt("0xA"); //10
var num4 = parseInt("22.5");//22
var num5 = parseInt(070); //56
var num6 = parseInt(70);   //70
var num7 = parseInt("10",2); //2
var num8 = parseInt("10",8); //8()
var num9 = parseInt("10",10); //10
var num10 = parseInt("10",16); //16
var num12 = parseInt("AF",16);//175


与parseInt()函数类似,parseFloat()也是从第一个字符(位置0)开始解析每个字符。而且也是一直解析到字符串末尾,或者解析到遇见一个无效的浮点数字字符为止。也就是说,字符串中的第一个小数点是有效的,而第二个小数点就是无效的了,因此它后面的字符串将被忽略。例如,”22.34.5“将会被转换成22.34。
parseFloat()和parseInt()的第二个区别在于它始终都会忽略前导的零。由于parseFloat()值解析十进制值,因此它没有用第二个参数指定基数的用法。

String类型

String类型用于表示由零或多个16位Unicode字符组成的字符序列,即字符串。字符串可以由单引号(‘)或双引号(")表示。

任何字符串的长度都可以通过访问其length属性取得

alert(str1.length);
//5要把一个值转换为一个字符串有两种方式。第一种是使用几乎

每个值都有的toString()方法。

数值、布尔值、对象和字符串值都有toString()方法。但null和undefined值没有这个方法。

多数情况下,调用toString()方法不必传递参数。但是,在调用数值的toString()方法时,可以传递一个参数:输出数值的基数。

var num1 = parseFloat("1234blue");    //1234
var num2 = parseFloat("0xA");//0
var num3 = parseFloat("22.5");//22.5
var num4 = parseFloat("22.34.5");    //22.34
var num5 = parseFloat("0908.5");    //908.5
var str1 = "Hello";
var str2 = ‘Hello';
var age = 11;
var ageAsString = age.toString(); //"11"
var found = true;
var foundAsString = found.toString(); //”true"
var num = 10;
alert(num.toString());      //"10"
alert(num.toString(2));     //"1010"
alert(num.toString(8));     //"12"
alert(num.toString(10));    //"10"
alert(num.toString(16));    //“a"


通过这个例子可以看出,通过指定基数,toString()方法会改变输出的值。而数值10根据基数的不同,可以在输出时被转换为不同的数值格式。 在不知道要转换的值是不是null或undefined的情况下,还可以使用转型函数String(),这个函数能够将任何类型的值转换为字符串。String()函数遵循下列转换规则:

● 如果值有toString()方法,则调用该方法(没有参数)并返回相应的结果

● 如果值是null,则返回"null"

● 如果值是undefined,则返回”undefined“

var value1 = 10;
var value2 = true;
var value3 = null;
var value4;
alert(String(value1));    //"10"
alert(String(value2));    //"true"
alert(String(value3));    //"null"
alert(String(value4));    //“undefined"


在 String
对象中有相当多的方法可用于操作和收集有关文本的信息。 以下是可用的方法列表:

charAt
charCodeAt
concat
fromCharCode
indexOf
lastIndexOf
match
replace
search

slice
split
substr
substring
toLowerCase
toUpperCase


Array类型

在程序语言中数组的重要性不言而喻,JavaScript中数组也是最常使用的对象之一,数组是值的有序集合,由于弱类型的原因,JavaScript中数组十分灵活、强大,不像是Java等强类型高级语言数组只能存放同一类型或其子类型元素,JavaScript在同一个数组中可以存放多种类型的元素,而且是长度也是可以动态调整的,可以随着数据增加或减少自动对数组长度做更改。

创建数组有两种方式,构造函数以及字面量。下面我们依次介绍一下这两种方式。

构造函数

1.无参构造函数,创建一空数组

var a1=new Array();2.一个数字参数构造函数,指定数组长度(由于数组长度可以

动态调整,作用并不大),创建指定长度的数组var a2=new Array(5);

3.带有初始化数据的构造函数,创建数组并初始化参数数据var a3=new Array(4,'hello',new Date());

字面量

1.使用方括号,创建空数组,等同于调用无参构造函数var a4=[];

2.使用中括号,并传入初始化数据,等同于调用调用带有初始化数据的构造函数

var a5=[10];

注意点

1.在使用构造函数创建数组时如果传入一个数字参数,则会创建一个长度为参数的数组,如果传入多个,则创建一个数组,参数作为初始化数据加到数组中。但是使用字面量方式,无论传入几个参数,都会把参数当作初始化内容

   var a1=new Array(5);
console.log(a1.length);//5console.log(a1); //[] ,数组是空的
var a2=new Array(5,6);
console.log(a2.length);//2
console.log(a2); //[5,6]
var a1=[5];
console.log(a1.length);//1
console.log(a1); //[5]
var a2=[5,6];
console.log(a2.length);//2
console.log(a2); //[5,6]


我们很多时候希望删除中间一个元素后,后面元素的index都自动减一,数组length同时减一,就好像在一个堆栈中拿去的一个,数组已经帮我们做好了这种操作方式,pop和push能够让我们使用堆栈那样先入后出使用数组。

  
var a=new Array(1,2,3);
a.push(4);
console.log(a);//[1, 2, 3, 4]
console.log(a.length);//4
console.log(a.pop(a));//4
console.log(a); //[1, 2, 3]
console.log(a.length);//3


既然栈方法都实现了,先入先出的队列怎么能少,shift方法可以删除数组index最小元素,并使后面元素index都减一,length也减一,这样使用shift/push就可以模拟队列了,当然与shift方法对应的有一个unshift方法,用于向数组头部添加一个元素。

   var a=new Array(1,2,3);
a.unshift(4);
console.log(a);//[4, 1, 2, 3]
console.log(a.length);//4
console.log(a.shift(a));//4
console.log(a); //[1, 2, 3]
console.log(a.length);//3


2 控制结构JS中控制结构和C语言基本类似,这里不再详细叙述。

if(){}else{}
var d=new Date()
var time=d.getHours()
if(time<12)
{
case 1:
document.write(“”)
}else{
document.write(“”)
}
switchexpression
{
..
break;
default:
}
break;
for
var s=0
for(i=0;i<=100;i++)
{
s=s+i
}
var cname= new
Array(“sunday”,”monday”,”tuesday”)
for(x in cname)
{
document.write(cname[x])
}


3 函数与表达式JavaScript 函数语法

function functionname(){

这里是要执行的代码

}

函数就是包裹在花括号中的代码块,前面使用了关键词function。当调用该函数时,会执行函数内的代码。

可以在某事件发生时直接调用函数(比如当用户点击按钮时),并且可由 JavaScript 在任何位置进行调用。

提示:JavaScript 对大小写敏感。关键词 function 必须是小写的,并且必须以与函数名称相同的大小写来调用函数。

调用带参数的函数在调用函数时,您可以向其传递值,这些值被称为参数这些参数可以在函数中使用。您可以发送任意多的参数,由逗号 (,) 分隔:myFunction(argument1,argument2)当您声明函数时,请把参数作为变量来声明:

function myFunction(var1,var2)

{

这里是要执行的代码

}变量和参数必须以一致的顺序出现。第一个变量就是第一个被传递的参数的给定的值,以此类推。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐