JavaScript语法

【JavaScript语法】第二章 JavaScript语法
2.1 JavaScript脚本位置:
必须嵌套在html文件中,可以嵌套在head标签里面,也可以嵌套在body,JavaScript的代码必须嵌套在script标签里面;
如果JavaScript的代码比较多的话,可以将其封装到外部的js文件中,再通过script的src属性加载进来
JavaScript语法
文章图片

2.2变量
(1)介绍:变量,就是计算机中保存数据的容器
(2)在JavaScript中如何声明变量?
通过var关键字声明变量,一旦浏览器看到var关键字,就会在内存中创建一块空间,用来存储数据;
(3)变量练习:
有两瓶酒,一瓶白酒,一瓶红酒,将这两瓶酒互相交换一下,红酒瓶装白酒,白酒瓶装红酒:
JavaScript语法
文章图片

(2)变量的命名规范:
字母,字母数字,下划线的组合,不能纯数字作为变量名;
变量名严格区分大小写;
变量名不要取:JavaScript关键字重复this,time, number ,string
(3)在网页输出变量:
Alert():在浏览器的窗口弹出变量的内容;
Console.log():在控制台输出内容(F12或者fn+F12或者通过浏览器的开发者工具)
(4)Document.write向body中写内容;
Document.title向title中写内容;
JavaScript语法
文章图片

2.3 JavaScript数据类型
说明:根据容器能够存储哪些数据,进行了分类,分为以下几类:
(1)字符串类型:
JavaScript的字符串类型的数据,通过引号定义(单引号,双引号);并且单引号和双引号没有区别;
如果字符串中想要解析变量,就需要通过字符串拼接:
JavaScript语法
文章图片

(1)数值类型
在JavaScript中小数和整数都是数值类型;
JavaScript语法
文章图片

(2)布尔类型
说明:布尔类型用来保存一些状态,或者对立的一对数据,例如:
开,关;
是,否;
对,错;
而且布尔类型通常是用来作为条件判断;在PHP中字符串的0,[]会被转换成false,在JavaScript中”0“,[]会被转换成true;
如何将数据类型进行强制转换呢?
使用boolean进行
JavaScript语法
文章图片

(3)函数类型
1》说明:为什么说函数也是一个数据类型,因为可以 1.定义变量来保存函数;2.通过function关键字定义函数
JavaScript语法
文章图片

2》变量的作用域
在JavaScript中,函数外部定义的变量就是全局变量,可以在脚本的任何地方使用,函数内部定义的变量,称为局部变量,只能在函数内部使用;
补充:如果子啊函数内部声明变量时,没有使用var关键字,就说明该变量就是全局变量。
JavaScript语法
文章图片

3》变量的作用域链:
说明:当我们在函数内部访问一个变量时,会先在函数内部查找,如果没有找到,则会去上一级作用域查找,这个查找的过程就称之为作用域链:
JavaScript语法
文章图片

5》函数的参数
JavaScript中除了形参,实际参数还可以通过arguments对象进行管理;第一个参数保存到arguments数组的第一个元素,第二个参数保存到arguments数组的第二个元素,。。。。。。
JavaScript语法
文章图片

6》函数的返回值
函数不一定必须要返回结果,取决于需求,如果没有返回结果,则接收到的就是undefined,相当于什么都没有接收到
JavaScript语法
文章图片

7》JavaScript中的闭包特性:
1.什么是闭包?
当我们在一个函数内部,嵌套定义函数的时候,内部函数就会将外部函数的变量的最终值包起来,保存在内存中;
2.闭包会导致怎样的结果?
内部函数,会将外部函数中的变量的最终值保存到内存中,这样在函数的外部可以读取内部的值
JavaScript语法
文章图片

举例说明:
JavaScript语法
文章图片

闭包注意:由于闭包会使得函数中的变量都被保存在内存中,内存的消耗很大,不能滥用,否则会造成网页的性能问题,在IE中可能导致内存泄漏。解决的方法是,在退出函数之前,将不使用的局部变量全部删除。
解决办法:
JavaScript语法
文章图片

(4)数组类型
在上面学习的4个类型中,只能保存一个字符串,但是数组可以保存多个;称数组,对象为复合型的数据
1.定义数组:
方式一:var arr = new Array(‘zhngs’,‘shdjw’,‘dhw’,22);
方式二:var arr=[1,2,3,4,5,9];
JavaScript语法
文章图片

2.在JavaScript中 ,不能定义关联类型的数组
JavaScript语法
文章图片

3.如果想创建关联性数组,需要使用对象来创建
4.数组的遍历:
方法1:通过for循环遍历;
JavaScript语法
文章图片

方法2:通过for…in循环
JavaScript语法
文章图片

(5)对象类型
数组只能定义索引数组,如果保存一些关联类型的数据,请使用对象,对象就是一些属性值的集合
方法1:通过构造器来创建对象;
构造器其实就是一个普通函数,当我们以new的形式来调用该函数时就会生成一个对象,这个时候,我们称之为构造函数或者构造器;在构造函数中,通常使用this指向当前对象;
JavaScript语法
文章图片

方法2:快捷语法{},字面量
Javascript object botation ,JavaScript对象表达法
字面量语法格式:
{属性名:属性值,
属性名:属性值,
属性名:属性值
方法名:function()
}
//快捷语法(字面量语法)
var Game = {
name:‘大蜜蜂’,
fire:function(){
alert(‘发射子弹:biu-biu -biu’);
}
};
console.log(typeof(Game));
alert(Game.name);
Game.fire(); `//
方法3:new Object()
var obj = new Object();
obj.name=‘大象’;
obj.skill= function(){
alert(“搬木头”);
}
alert(obj.name);
obj.skill();
对象成员的访问:
方法1:.语法;
方法2:[]语法
有时候,我们必须使用[]的语法访问对象成员;例如:
function Sanke(){
this.name=‘小倩’;
this.color=‘green’;
this.eat=function(){
console.log(‘能吃老鼠’);
}
}
var sanke = new Sanke();
//使用for …in循环遍历对象的成员
for(var att in sanke){
// console.log(att);
//访问属性对应的值:
console.log(sanke[att]); //att这个变量的值作为sanke的属性和方法
}
(6)null类型:
Null,指的是一个空对象的指针,可以理解为是一个空对象的占位符;
这里是一个对象,但是里面什么都没有,还是空的
var obj=null; //这里是一个对象,不过里面没有任何属性
console.log(typeof(obj));
undefined,未定义
1.函数没有返回值,结果就是undefined
function test(){
}
console.log(rest());
2.一个对象声明了,但是未初始化值
var box;
console.log(box);
JavaScript语法
文章图片

2.4 数据类型转换
(1)自动类型转换:
当字符串,数值类型的数据,进行加法运算时,数值会自动转换成字符串;
当if条件里面,会将结果自动转换成布尔类型;
var a = ‘1’; //字符串
var b =1; //数值
console.log(a+b); //11
console.log(typeof(a+b)); //string
JavaScript语法
文章图片

(2)强制类型转换
通过JavaScript的函数强制将某种类型转换,类型转换的函数有:
1.Number():强制将其他的数据转换成数值;
2.ParseInt:强制将其他的数据转换成整数;
3.parseFloat():强制将其他的数据转换成小数;
4.String():强制将其他的数据转换成字符串;
5.Boolean():强制将其他的数据转换成布尔型;
如:
var a = ‘1’; //字符串
var b =1; //数值
var str=‘536hdgbsh’;
var num=Number(str); //NaN
var num = parseInt(str); //536
var str=‘128.99’;
var num=parseInt(str); //128
var num=128;
var str= String(num);
console.log(typeof(str));
var str =‘0’;
var arr = [];
var res =Boolean(str);
var res1=Boolean(arr);
console.log(res);
console.log(res1);
2.5 JavaScript运算符
(1)算术运算符
+ / % ++ –

var a = 10; var b = a++; //10 var c =--b; //9 var d = c++ + ++c; //9 ++10=20

说明:JavaScript里面 +,除了四则运算的功能之外,还用来作为字符串来链接,例如:“1”+1=11;
前++,前–,先增值(值减),再运算;
后++,后–,先运算,再值增(值减);
(2)赋值运算符:
= += -= *= /= %=

JavaScript语法
文章图片

(3)比较运算符
用来比较值,> < == === != !== >= <=
==,两个等号用来比较值是否相等;
===,三个等号,用来比较值,数据类型是否全等
var v1=100; var v2 ='100'; alert(v1==v2); alert(v1===v2);

(4)逻辑运算符
&& || !
var wanju=true; //有玩具 var lingshi=true; //没有零食 if(wanju||lingshi){ alert('hanppy'); } if(wanju&&lingshi){ alert('very hanppy'); } alert(!wanju);

(5)三元运算符
条件==true ?执行这里:条件不满足执行的情况
var age=18; var res=age>=18?'可以上网':'不能上网'; alert(res);

2.6 JavaScript流程语句
分支:
1.单路分支:if(){}
2.双路分支:if()else{}
3.多路分支:
条件是范围时:
If(){
}else if(){
}else if(){
}
固定的几个点使用switch,例如方向,星期
Switch(){
Case:
Break;
var money = 3000; if(money>5000){ alert('去浪'); }else if(money>3000){//else if中间有空格 alert('吃东西'); }else{ alert('撸代码'); }

5.嵌套分支:
If(){
If(){
}
}
循环:
For(){}计数循环,循环数组(索引数组)
For …in()循环
While()
JavaScript语法
文章图片

2.7循环练习案例:
1.输出1-100的和;
JavaScript语法
文章图片

2.输出1到100之间的数字,如果是3的倍数输出,如果是5的倍数输出,如果是3和5的倍数也输出;
JavaScript语法
文章图片

    推荐阅读