语句和变量
1.语句
语句是完成某种特定任务的代码,在Javascript中每条语句要以”;”结束;
语句在定义的时候可以出现在一行中,也可以一行出现多条语句,都是允许的;
表达式可以单独出现在JS代码中,但是没有任何意思;
var _div = ""; var _div = "";
// 没有任何的意思
1 + 2;
2.变量
变量是对“值”的引用。在其他的场合中,我们有的时候把引用也成为地址或指针。
在JS中,定义变量使用“var”关键字。
var _msg = "hello";
// 上述的语句,在JS解释器中其实是分了两个步骤完成
// 第一步:
var _msg;
// 此时变量_msg的值为undefine;
// 第二步:
_msg = "hello";
引申:基本数据类型和引用数据类型
var可以不出现变量的定义中,但是他的作用和出现var定义变量是有区别的。
如果在变量声明的时候没有使用var,那么该变量则会变成一个全局的变量。
3.输出语句
JavaScript 可以通过不同的方式来输出数据:
使用 window.alert() 弹出警告框。
使用 document.write() 方法将内容写到 HTML 文档中。
使用 innerHTML 写入到 HTML 元素。
使用 console.log() 写入到浏览器的控制台。
document.getElementById(“demo”).innerHTML=”段落已修改。”;
document.write(Date());
一切皆对象
1.什么是对象
世间任何一个我们需要进行研究的事物都是一个对象。对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。
2.怎样构造对象
var person={
"name":"小明",
"age":"18",
"like":function(){
return "喜欢打篮球,弹吉他"
}
}
var person=new Object();
person.name='小明';
person.sex='男';
person.method=function(){
return this.name+this.sex;
}
3.属性的操作
有两种方式读取对象的属性,一种使用点运算符,还有一种是使用方括号运算符。
var obj = {
name : "Tom",
age : 27,
sex : true,
3:"333"
};
console.log(obj.name); // Tom
console.log(obj["name"]); // Tom
console.log(obj[3]); // 333
4.检查变量是否声明
在判断属性在变量中是否存在的时候,我们一般使用in运算符进行判断,虽然直接(obj.score)有时也会达到一样的效果,但是有漏洞,比如socre的属性为“”或false时,就会达不到预期的效果。
var obj = {
name : "Tom",
age : 27,
sex : true,
3:"333",
score : ""
};
if (obj.score) {
console.log("score is exist");
} else {
console.log("score is not exist");
}
// score is not exist
// 要求使用 in 这种严谨的判断方式
if ("score" in obj) {
console.log("score is exist");
} else {
console.log("score is not exist");
}
// score is exist
5.属性的赋值
可以通过点操作符和方括号操作符对对象的属性进行赋值。
Javascript允许对对象的属性进行“后绑定”,你可以在变量声明后的任意时刻,新增属性,并进行赋值,没有必要在对象定义的时候,就把对象的属性都定义好。
var tobj = {};
tobj.name = “Jack”;
tobj[“age”] = 20;
console.log(tobj.name + ” ” + tobj.age ); // Jack 20
6.查看所有属性
通过Object.keys(obj)方法获取到所有的属性数组
var tobj = {};
tobj.name = "Jack";
tobj["age"] = 20;
console.log(Object.keys(tobj)); ["name","age"]
7.delete命令
delete命令用于删除对象的某个属性,如果删除成功,返回true。
var tobj = {};
tobj.name = "Jack";
tobj["age"] = 20;
console.log(tobj.name + " " + tobj.age );
console.log(Object.keys(tobj)); // ["name","age"]
delete tobj.name;
console.log(tobj.name); // undefined
console.log(Object.keys(tobj)); // ["age"]
标识符、注释和区块
1.标识符
标识符简单的理解就是“起名字”。在给变量、方法等定义的名称都可以理解为标识符。
标识符定义的规则:
第一个字符:任意的Unicode字母(包含英文字母和其他语言的字母),以及美元符号$和下划线_;
第二个字符及后面的字符开始可以包含0-9的数字;
var a = ""; // 合法
var $ = ""; // 合法
var abc = ""; // 合法
var _abc = ""; // 合法
var _a$1 = ""; // 合法
var 1a = ""; // 就是不合法的标识符定义
除此之外,JavaScript使用的关键字也不能作为标识符的定义
ECMA-262 描述了一组具有特定用途的关键字。这些关键字可用于表示控制语句的开始或结束,或者用于执行特定操作等。按照规则,关键字也是语言保留的,不能用作标识符。以下就是ECMAScript的全部关键字(带*号上标的是第5 版新增的关键字):
![这里写图片描述](https://box.kancloud.cn/b33053bebd68b0f7f3b7a4ef3ac47c80_2307x718.png)
ECMA-262 还描述了另外一组不能用作标识符的保留字。尽管保留字在这门语言中还没有任何特定的用途。但它们有可能在将来被用作关键字。以下是ECMA-262 第3 版定义的全部保留字:https://box.kancloud.cn/1fe0c4529f0dd4ab08709e211f410aa6_2307x821.png
第5 版把在非严格模式下运行时的保留字缩减为下列这些:
![这里写图片描述](https://box.kancloud.cn/43dc12662335e17a6b4902cac1d5b661_2311x212.png)
在严格模式下,第5 版还对以下保留字施加了限制:
![这里写图片描述](https://box.kancloud.cn/fb6c139aa043de5dfa3e88f334443995_2305x309.png)
2.注释
注释让代码的可读性增强,并可以对相关的代码提供必要的说明。JavaScript的引擎会忽略掉注释部分的代码。
注释的分类:
单行注释://
多:/*/**
* 函数名称:add
* 函数作用:完成加法运算
* 参数:a:加数 b:加数
* 返回值:数值型
* 作者:Aaron
* 版本:1.0
* 时间:2017-04-17
*/
function rs2() {
// xxxxxxx
var gs = document.getElementById("gs").value;
var rss = eval(gs);
document.getElementById("rs").value = rss;
}
3.区块
JavaScrip使用大括号将多行相关语句的代码包裹起来,成为区块(block)。
不同于其他编程语言,在区块中定义的变量,其生命周期不单在区块范围内,超出区块也能使用在区块中定义的变量。
条件语句
在默认的语句中,程序总是一行一行的去解析执行特定的语句,但是有的场景下,顺序的执行语句无法满足程序的要求。
1.if 结构
// if结构语句的语法
if (expression)
{
statement
}
// 表达式最后的值必须是个boolean值 true或者false
在条件表达式中,数字0和非0也可以表现为false和true。
在Javascript中,=、==、===的区别
“=”:赋值运算符
“==”:值相等
“===”:严格相等运算符
在statement中如果出现多行语句必须要使用{}包裹,如果只有一行可以不用{};
在还是一个初级程序员的时候,为了代码的可读性,还是建议将只有一行代码的语句块用{}包裹。
2.if…else结构
// if结构语句的语法
if (expression)
{
statement
} else {
statement
}
// 在else代码中执行的条件是紧跟着自己的if的非条件
// 使用if结构和if…else结构其实都是可以实现相同的功能的,只不过在表达方式上有所区别。
// 代码块说明
var age = 80;
if (age <= 18)
{
console.log("1-我未满18岁");
}
if (age > 18 && age <= 30)
{
console.log("1-我在18-30岁之间");
}
if (age > 30 && age <= 50)
{
console.log("1-我在30-50岁之间");
}
if (age <= 18)
{
console.log("2-我未满18岁");
} else {
if (age <= 30)
{
console.log("2-我在18-30岁之间");
} else {
if (age <= 50)
{
console.log("2-我在30-50岁之间");
}
}
}
if (age <= 18)
{
console.log("3-我未满18岁");
} else if (age <= 30){
console.log("3-我在18-30岁之间");
} else if (age <= 50){
console.log("3-我在30-50岁之间");
} else {
//
;
}
3.switch结构
switch我们一般用在多个离散的值进行条件判断时使用,特别是有很多的值的时候。
var monthNum = 2;
switch (monthNum)
{
case 1:
console.log("一月");
break;
case 2:
console.log("二月");
break;
case 3:
console.log("三月");
break;
case 4:
console.log("四月");
break;
}
var sex = "man";
switch (sex)
{
case "man":
console.log("man");
break;
case "woman":
console.log("woman");
break;
default:
console.log("in default");
}
- 三元运算符
三元运算符我们一般用简单的逻辑判断和赋值语句中。
var sexFlag = 2;
var sexStr;
if (sexFlag === 1) {
sexStr = "man";
} else {
sexStr = "woman";
}
// 语法(condition) ? expre1 : expre2;
// 实现的效果和上述的if...else结构一样
sexStr = (sexFlag === 1 ? "3-man" : "3-woman");
console.log(sexStr);
循环语句
1.while循环
循环语句是用于重复执行某些操作。
s1;
while (expression) {
statement;
}
s2;hile语句时,判断expression的值是否为真,如果真,就执行{}里面的代码块,当代码块执行完成后,继续判断expression是否为真,直到为假的时候,才会执行到s2语句。
这里要注意的是,如果expression一直为真,那么程序就死循环了。
如果循环体内只有一条语句,那么{}可以省略,但是为了程序的可读性,不建议省略。
var i = 1;
var sumi = 0;
while (i <= 10000) {
sumi = sumi + i;
i = i + 1;
}
document.write("sumi=" + sumi);