JavaScript基础语法
2.1、标识符
所谓标识符,就是指变量、函数、属性的名字,或者函数的参数(凡是可以自己起名字的地方,都叫标识符)。
标识符命名规范(包括函数名,变量等):
必须由字母、数字、下划线、 符 号 组 成 ; 必 须 以 字 母 、 下 划 线 或 者 符号组成; 必须以字母、下划线或者 符号组成;必须以字母、下划线或者开始; (不能以数字开头)
命名不能是系统的关键字:比如new ,if,class…
关键字:赋予特殊含义的单词
区分大小写
命名最好用有意义的名称(见名之意)。比如说name,people…
例如:myName、book123 是正确的标识符命名等
驼峰原则: 首字母小写,多个单词组成,从第二个单词的首字母开始都大写; 比如: getNameById();
常量命名: 全部大写,多个单词组成,每个单词之间由下划线分割;
需要注意的是ECMAScript 中的一切,包括变量、函数名和操作符(typeof、instanceof、void等)都是严格区分大小写的。例如:text 和Text 表示两种不同的变量。
2.2、变量
1、什么是变量?
可以发生改变的量就是变量,变量可以看做是存储数据的容器。比如一个瓶子,它既可以装入酱油、醋;也可以装入茅台和二锅头…
2、变量的命名:
可以给变量起一个简短名称,这个名称就是变量名。比如 x,或者更有描述性的名称,比如 age、name等。变量名对大小写敏感(y 和 Y 是两个不同的变量)且必须以字母或下划线开始。可以通过其名称来引用一个变量,以此显示或改变它的值。
3、变量的声明:
在 JavaScript 中创建变量通常称为“声明”变量,使用关键字 var来声明变量。
向变量赋值,使用等号;可以在声明变量时对其赋值,也可以先声明后赋值。
可以在一条语句中声明很多变量。该语句以 var 开头,并使用逗号分隔变量即可
声明一个变量count:var count;
声明一个变量username:var username;
在以上声明之后,变量并没有值,仅仅只是变量声明,不过可以在声明它们时向变量赋值,”=”是赋值符号,变量名在赋值符号符号的左边,而需要向变量赋的值在赋值符号的右侧。
var count = 5; var username= "Volvo"; -->变量声明并赋值
也可以先声明后赋值。
var count ; x=100;
var username; username = “zhangsan”;
注释:在为变量赋文本值时,请为该值加引号(单引号或双引号都可以)。
如果所赋值的变量还未进行过声明,该变量会自动声明。
这些语句:
x = 5; carname = "Volvo";
与这些语句的效果相同:
var x = 5; var carname = "Volvo";
如果再次声明了 JavaScript 变量,该变量也不会丢失其原始值。
var x = 5; var x;
在以上语句执行后,变量 x 的值仍然是 5。在重新声明该变量时,x 的值不会被重置或清除。
但是如果是在下面这种情况下,JavaScript 变量的值会改变
var x = 5; var x = 7;
此时页面输出的值为7。
JavaScript也允许一次定义多个变量:
var a,b,v;
还可以在定义变量的同时给变量赋初始值:
var a=12,b,c=34;
如果一个变量没有赋值,它的值是undefined(未定义)。
温馨提示:
在一个HTML文档使用script标签嵌入多个JS语句的时候,这几个语句之间是相通的,或者说是有关联的。
4、变量的简单使用:
1、小明今年20岁,小胡比小明大15岁,请问小胡今年多大?
2、在淘宝网购物,一件衣服55.4元,如果买4件衣服,共花多少钱?
2.3、关键字、保留字
ECMA-262 描述了一组具有特定用途的关键字。这些关键字可用于表示控制语句的开始或结束,或者用于执行特定操作等。按照规则,关键字也是语言保留的,不能用作标识符。以下就是ECMAScript的全部关键字。
关键字:
break | do | instanceof | typeof |
---|---|---|---|
case | else | new | var |
catch | finally | return | void |
continue | for | switch | while |
debugger | function | this | with |
default | if | throw | delete |
in | try |
保留字:
ECMA-262 还描述了另外一组不能用作标识符的保留字。尽管保留字在这门语言中还没有任何特定的用途。但它们有可能在将来被用作关键字。
abstract | enum | int | short |
---|---|---|---|
boolean | export | interface | static |
byte | extends | long | super |
char | final | native | synchronized |
class | float | package | throws |
const | goto | private | transient |
debugger | implements | protected | volatile |
double | import | public |
2.4、数据类型
JavaScript数据类型分为以下几种:
字符串(String)、
数值(Number)、
布尔(Boolean)、
数组(Array)、
对象(Object)、
空(Null)、
未定义(Undefined)。
2.4.1、字符串(String)
字符串是存储字符(比如 “Bill Gates”)的变量。
字符串可以是引号中的任意文本。您可以使用单引号或双引号;
变量字符串:如:var text=“HTML5视频教程”
可以使用"+"进行字符串的连接。
注:字符串类型可以和任何类型做+运算;
在 JavaScript 中,字符串使用单引号或者双引号来起始或者结束。那么如何输出单引号或者双引号呢?就要用到转义字符
JavaScript中常用的转义字符
换行符:\n 回车符:\r
反斜杠: \\
双引号: \"
单引号:\’
转义字符非常多,这里仅仅介绍几种常用的
2.4.2、数值(Number)
JavaScript 只有一种数值类型。数值可以带小数点,也可以不带。
极大或极小的数字可以通过科学(指数)计数法来书写:3e4
数值可以通过运算符进行计算。
浮点数值的最高精度是16位小数,但是在进行算术计算时其精度远远不如整数。例如,0.1加0.2的结果不是0.3, 而是0.30000000000000004。这个舍入误差会导致无法测试特定的浮点数值。
数字可以写成十进制、八进制、十六进制。
八进制在js中表示是第一位一定要是0,后面就是八进制字数序列(0~7)
十六进制字面量前两位必须是0x,后面跟十六进制数字(09及AF)。字母A~F不区分大小写。
温馨提示:
科学(指数)计数法、八进制、十六进制表示的数字在输出时统统会转换成十进制。
2.4.3、布尔(Boolean)
布尔(逻辑)只能有两个值:true 或 false。
将各种类型的值转化成Boolean类型的规则如下:
Number:任意非0的数值为true,0值和NaN为"false"。
String:所有的非空字符串转化为 true;""(空字符串)转化成false
Object的任何非空对象都会转化为 true;
在javascript中,只要逻辑表达式不返回undefined不返回null,就都是真的。
注:通常和流程控制语句结合使用
2.4.4、数组(Array)
使用关键字创建或[]
创建数组的方式:
var 数组名=[数组值…值N];
var 数组名= new Array(值1…值N);
var 数组名= new Array();
可以通过数组的下标来访问数组的元素。
数组元素的顺序从0开始
数组名[0]=值;
数组名[1]=值;
…
<!doctype html>
<html>
<head>
<title>页面标题</title>
<meta charset="utf-8">
</head>
<body>
<script>
/**
Java数组的创建方式:
数组类型 数组名[] = new 数据类型[长度]; int arr[] = new int[5];
数组类型 数组名[] = {值1,值2....}
Java数组的特点:
Java数组只能存储一种数据类型
定义长度为多少只能存储多少,如果长度存储长度,回爆: 数组下标越界异常
*/
/**
JavaScript数组的创建方式:
1. 构造函数创建
var 数组名 = new Array(); -- 得到一个空数组
var 数组名 = new Array(数组); -- 创建指定长度的数组
var 数组名 = new Array(值1,值2,值3...) 创建数组并赋予值
2. 快捷创建
var 数组名 = [];
var 数组名 = [值1,值2,值3....];
JavaScript数组的属性:
length属性 用来获取数组的长度
JavaScript数组的特点:
JS数组可以存储任意数据类型
JS数组自动扩容,不是固定长度,类似于Java里面ArrayList
扩展:
Java获取数组长度是用length属性还是length()? length属性
Java获取字符串长度是用length属性还是length()? length()
注意事项:
当JS变量只有声明没有赋值的时候,去调用,那么undefined
当JS根本没有这个变量的时候,去调用,那么报错 arr is not defined
*/
var arr1 = new Array();
document.write("数组1的长度为:"+arr1.length+"<br>");
var arr2 = new Array(5);
document.write("数组2的长度为:"+arr2.length+"<br>");
//给数组存储数据: 通过下标来存储数据
//语法: 数组名[下标] = 值;
arr2[0] = 10;
arr2[1] = 20;
arr2[2] = 30;
arr2[3] = 40;
arr2[4] = 50;
arr2[10] = 100; //在Java里面这么写肯定报错
//调用数组里面的值
//语法: 数组名[下标]
document.write("下标1的值是:"+arr2[1]+"<br>");
document.write("下标20的值是:"+arr2[20]+"<br>");
document.write("数组2的长度为:"+arr2.length+"<br>");
var arr3 = new Array(5,"Hello",true,44.22);
document.write("数组3的长度为:"+arr3.length+"<br>");
var arr4 = []; //创建一个空数组 类似于 new Array();
var arr5 = [1,3,5,7]; //创建数组并赋值
var arr6 = [7];
document.write("数组6的长度为:"+arr6.length+"<br>");
</script>
</body>
</html>
2.4.5、对象类型
对象由花括号定义。对象有属性和方法组成
在括号内部,无论是对象的属性还是方法都是以键和值对的形式 (key: value) 来定义。
多个属性或方法由逗号分隔
例如:
var person1 = {
id:1001,
name:"张三",
age:12,
eat:function(){
alert("吃饭的行为");
},
sleep:function(){
alert("睡觉的行为");
}
}
在javascript中,所有的对象都继承自Object对象。
对象没有赋值的属性,该属性的值为undefined。
对象的方法是函数,后面会详解;
2.4.6、空(Null)
Null也是一个只有一个得数据类型,它的值就是null,任何变量只要给其赋值为null的话这个变量的数据类型就是Null类型。
可以通过将变量的值设置为 null 来清空变量。
2.4.7、未定义(Undefined)
这个值表示变量不含有值或未声明。
这是一个很有意思的数据类型,因为它的值只有一个,那就是undefined。
在声明变量时如果没有将变量赋值的话这个变量也是属于Undefined类型的。。
如果一个变量没有声明就直接去访问解释器会报错误信息,但是这样的变量如果使用typeof返回的结果也是"undefined"。
Null和Undefined的区别:
Null 已定义,并初始化为null;
Undefined:未定义,或者未初始化 。
2.4.8、数据类型归总
原始数据类型:
对象类型:
2.5、typeof运算符
typeof运算符可以查询数据类型
其返回可能值有:undefined,boolean,number,string、object以及function.
可以使用typeof(变量名)查询数据类型