JS中的变量、函数、数据类型及转换
JavaScript是弱变量类型的语言
变量只需要用var来声明。Java,C#中变量的声明,要根据变量是什么类型的来声明:
int a;
float a;
double a;
String a;
boolean a;
var a ;
javascript:变量的使用,数据类型,if判断,循环语句。
变量。
作用:用来存储一些可以变化的数据。
代码:
1.0变量的声明:
var 变量的名称;
var name;
注意命名规则:
1.0取值范围:0-9,a-z,A-Z,_,$
2.0区分大小写
3.0不能用数字开头
4.0不能与关键字和保留字(备胎)冲突。
2.0变量的赋值:
变量的名称 = 要赋值的数据;
name = “abc”;
讲作:将字符串abc赋值给name;在变量a中存储一个数据这个数据的类型是字符串,内容是abc.
3.0变量赋值之后可以使用(使用的方式与直接量一样)。
注意:
变量的取名一定要规范:变量名称的取值范围是:0-9,a-z,A-Z,_,$,并且数字不能作为变量名称的开始部分。
变量的名称是区分大小写的:
变量的名称不能是关键字和保留字(备胎);
javascript代码虽然是从上到下执行的。但是如果js有语法错误,那么浏览器不会执行这里面的js代码。因为浏览器会先去检查js代码是否有错误,如果没有才会从上到下执行。
如果两个变量相加:
两个都是number类型,那么加号的作用是相加
两个都是string类型,那么加号的作用是连接
一个是number另一个是string,那么加号的作用是连接。
js中的函数(方法):
定义函数(声明函数)
function 函数名(参数1,参数2){
命令代码
}
ps:参数可以有一个或多个以逗号分隔,也可以不传参
调用函数
函数名()
ps:函数声明不调用是不起作用的
return 在函数中返回计算结果
函数的好处
1.可重复利用
2 执行效率快
3 使代码变得清晰易读
4.可封装一部分代码
将一段经常使用的代码用一个方法包起来,将来方便再次调用。
匿名函数
匿名函数就是没有函数名,不需要调用
eg:btn.onclick = function(){}
定时器
开启定时器
1. setTimeout() 只执行一次
停止定时器
clearTimeout()
2. setInterval() 每隔多长时间执行一次
clearInterval()
ps:定时器在使用的时候必须定义一个变量将其存起来。
流程控制:
问题:写一段代码,判断张身上有多少钱,如果钱超过300块就请吃大餐,如果不够下次记得带够?
if else
if(判断条件/boolean值){
//满足条件会执行下面的代码
代码1;
}else {
//当上面的条件不满足,或者boolean的值为false的时候会执行下面的代码2
代码2
}
注意:
1.0if后面接有判断条件,else后面没有接判断条件
2.0if和else只能执行一个。
if elseif else
判断张身上有多少钱,如果钱超过300块就请吃大餐,如果超过了200,吃中餐,如果不够下次记得带够?
代码:
if(判断条件/boolean值){
//满足条件会执行下面的代码
代码1;
}else if(判断条件) {
//当上面的条件不满足,或者boolean的值为false的时候会执行下面的代码2
代码2
}
else if(判断条件)
。。。。。
else {
最后代码
}
注意:
1.0在if_elseif_else结构中elseif可以有几数个
2.0整个结构只会执行一个代码段
3.0条件在判断的是时候先写小范围的条件再写大范围的条件。
4.0 elseif后面要加判断条件
5.0一个if可以构成一个完整的结构
switch_case
作用:用来判断多个可能出现的值:
代码:
switch(判断的值){
case 具体值:
要执行的代码段1;
break;
case 具体值2:
要执行的代码段2;
break;
......
default:
要执行的代码段n
break;
}
注意:
1.0case结构后面要跟一个具体的数值
2.0case结构可以有无数个
3.0如果所有的case都不满足,要执行default中的内容
4.0defalut可以不写,并且defalut也不用写条件
js代码的调试:(html,css没有办法调试,只有js代码可调试)
1.0打开开发人员工具,找到source选项:
2.0调试js代码:先在要调试的代码的行号中加上一个断点:
3.0将程序命中断点:刷新页面
4.0点击下一步按钮。
三元运算符:
作用:用于判断两个选择。
代码:
==boolean表达式?代码段1:代码段2;==
执行过程:
判断boolean表达式是否成立,如果成立会执行代码段1,如果不成立会执行代码段2;
排他思想
有排他必循环,先排除后确定
循环:
问题:希望大家能够在页面上输入100个alert(“啊!”)?
有没有一种方式能够让我们将这一百句话以最简单的方式书写出来。
while循环:
作用:反复执行一段代码:
代码:
while(判断条件/boolean){
代码块
}
while循环的执行流程:
当代码执行到while的时候,会先判断判断条件是否为true,如果为true,那么会执行while大括号中的代码块,代码块执行完毕以后,再次回到while中再进行判断,如果为true,再次执行while大括号中的代码块,并且再次回while,如果为false就不执行
注意:
1.0将来在写代码的时候一定要注意循环的判断条件不能一直为true,会成为一个死循环。
2.0循环的条件和循环体一定要明确。
3.0将来在实际开发中我们一般不会使用while循环,会使用for循环。
break:
作用:在循环内部结束这个循环。
用法
continue:
作用:在循环的内部结束本次循环,开始下一次循环:
do while:
与while是一样的,唯一的区别就是while先判断再做,do-while,先做再判断;
代码 :
do{
//要循环执行的代码块
}while (条件语句/boolean)
执行过程:
代码从上到下执行的过程中如果遇到了do就会先执行一次do后面的代码,执行之后再通过while来进行判断,如果判断通过那么再执行一次,如果判断不通过却结束循环。
for循环:
作用:反复执行同一段代码:
代码:
for(var i = 1; 判断条件; i++){
要循环的代码块:
}
执行步骤:
当程序运行到for的时候,会先声明一个变量i,并且赋值为1,判断i是否满足后面的判断条件,如果满足,执行下面的要循环的代码块,代码 块执行完成之后再执行i++,再判断判断条件是否满足,如果满足再次按照上面的流程执行,如果不满足,直接结束for循环。
数据类型的转换:
string,number(NaN),boolean,undefined
为什么需要数据类型的转呢?
问题:要用户输入一个数,我们将这个数据加一之后再输出?
要将字符串转成number类型以后才能进行计算。
prompt()接收到用户输入的内容是以什么类型来接收来的:
prompt接收到的内容是string类型。
数据类型的转换
显示转换:
1:转数字:
a)Number转换:
代码:
var a = “123”;
a = Number(a);
注意:
如果转换的内容本身就是一个数值类型的字符串,那么将来在转换的时候会返回自己。
如果转换的内容本身不是一个数值类型的字符串,那么在转换的时候结果是NaN.
如果要转换的内容是空的字符串,那以转换的结果是0.
b)如果是其它的字符,那么将来在转换的时候结果是NaN.
parseInt():
代码:
var a = “123”; a = parseInt(a);
忽略字符串前面的空格,直至找到第一个非空字符,还会将数字后面的非数字的字符串去掉。
如果第一个字符不是数字符号或者负号,返回NaN
c)会将小数取整。(向下取整)
parseFloat();//浮点数(小数)
与parseInt一样,唯一区别是parseFloat可以保留小数。
2.转字符串
可以将其它的数据类型转成字符串。
a)String():
代码:
var a = 123;
a = String(a);
b).toString()的方法来进行转换(包装类)。
代码:
var a = 123; a = a.toString();
3.转boolean类型:
可以将其它类型转为boolean值:
a)Boolean():
代码:
var a =”true”; a = Boolean(a);
注意:在进行boolean转换的时候所有的内容在转换以后结果都是true,除了:false、""(空字符串)、0、NaN、undefined
隐式转换:
a)转number:
var a = “123”;
a = +a;
加减乘除以及最余都可以让字符串隐式转换成number.
b)转string:
var a = 123;
a = a + “”;
c)转boolean:
var a = 123;
a = !!a;
数据类型:
简单数据类型:
string
number
boolean
undefined
null
在栈空间中开辟一块内存,将简单的数据类型存储到栈中。
复杂数据类型:
数组:Array
对象:Object;
先在栈空间中开辟一块内存,将数据保存到堆空间中,然后将数据在堆空间中的存储地址放在栈里面去。
共同点:都电脑的运行内存中的一部分。
不同点:
堆:存储空间大,运行速度慢。
栈:存储空间小,运行速度快。
object:对象(数据类型)
作用:可以用来存储数据。
保存小明的信息:
年龄,姓名,性别,爱好
由于通过变量来分别保存这些特征不太方便,所以我们干脆用一个对象来表示小明。
声明对象:
var xiaoming = new Object();
给对象赋值:
xiaoming.age = 18;
xiaoming.name = xiaoming;
xiaoming.sex = “男”;
xiaoming.aihao = “女”;
对象的使用:
如果要得到小明的aihao:
xiaoming.aihao
可以直接通过xiaoming.aihao得到小明对应的爱好。
数组:
问题:如果我要存储10个学生的成绩:
作用:要以用数组存储10个学生的成绩:
声明数组:
var arr = new Array();
赋值:
arr[0] = 67;
arr[1]=59.9;
arr[2]=”abc”;
arr[3]=xiaoming;
取值:
arr[下标];
注意:
1.0数组的下标是以0开始。
2.0数组声明以后,长度可以是无限长。
3.0js中的数组可以存储任意的类型。
数组的遍历:
数组中的一个属性:
arr.length;