JavaScript学习笔记
JavaScript的基本使用(二)
一、变量
变量:JavaScript是一门弱类型的语言,它没有明确的数据类型,使用var(varialbe)关键字进行变量声明,变量的类型由赋给的值所决定
- 变量名的命名规则跟其他编程语言类似,但首字母必须为字母
- JavaScript的变量可以先声明再赋值,可以在声明的同时为变量赋值,可以同时声明多个变量
- 变量的命名区分大小写!
- 一般情况下变量的命名使用小驼峰命名法,如:myName
注意!变量的声明有坑,推荐变量声明加上var关键字
在JS中变量有全局变量和局部变量之分,
当在函数内部变量没有声明而直接赋值使用时,变量是全局变量,举例如下:
// 当前使用了下函数的调用,后面会学到,跟其他语言的方法差不多
function fn() {
var num1 = 10;
num2 = 20;
}
fn();
console.log(num2);
console.log(num1);
可以看到,在函数内部声明了两个变量,num2可以正常输出,
接着程序就报错了,因为num2是全局变量,而num1是局部变量,
所以在执行打印num1时会报未定义错误,num1只能在函数内部执行
二、数据类型
- string(字符串类型)
- number(数值类型,支持整数、浮点数、八/十六进制(0/0x开头)
- boolean(布尔类型、值为true或false)
----特殊:Infinity(无穷大),Nan(非数字) - object(引用类型:object、array、function)
- undefined(未定义类型)
- null(空类型)
类型查看使用typeof()函数
// 示例
var a = "abc";
console.log(typeof(a)); //输出string
//注意!null返回为object
var a = null;
console.log(typeof(a)); //输出object
三、数据类型转换
1、隐式转换(自动转换,不需要人为干预,不推荐,容易出问题)
2、显示转换(强制类型转换,推荐)
3、转换函数
一、转换为数字
// 1、parseInt()有两个参数,第二个可选,视为进制转化
parseInt("123"); //123
parseInt("123.4"); //123
parseInt("123abc123"); //123
parseInt("abc123"); // NaN
parseInt()进制转化(两个参数)
parseInt("11",16);
//将11视为16进制,转换为十进制后输出17
// 2、parseFloat()
parseFloat("123"); //123
parseFloat("123.4"); //123.4
//3、Number()
Number("123"); //123
Number("123.4"); //123.4
Number("123a"); // NaN
//Number也可以转换布尔值和null
//
Number(true); //1
Number(false); //0
Number(null); //0
Number(""); //0
二、转换为字符串
//String()
var a = 1;
var b = String(a);
console.log(b); //输出字符串"1"
//toString()
var a = 1;
var b = a.toString();
console.log(b); //输出字符串"1"
区别:在执行字符串转换时,如果变量未初始化,就使用不了toString()方法,程序就会报错,但是使用String()函数强转时变量会有默认值undefined,可以正常输出,示例如下:
var a;
var b = String(a);
console.log(b); //输出字符串"undefined"
var c = a.toString() //报错
三、转换为布尔值
//Boolean()
Boolean();
Boolean(0);
Boolean(null); ------这些返回false,其余的都返回true------
Boolean("");
Boolean(undefined);
Boolean(false);
Boolean(NaN);
四、运算符及判断语句
一、运算符
注意:
- 使用==时,只比较值是否相等
var a = 1, b = "1";
a==b; //true
a===b; //false
- 使用+或+=时,当其中一个值为字符串时,会把另一个值转换为字符串再进行拼接
var a = 1, b = "abc";
console.log(a + b); //输出字符串1abc
- 当相加的两个值为数字、布尔值、null时,会把布尔值和null转换为数字再相加
var a = null, b = true;
console.log(a + b); //输出数字1
二、判断语句
通过各种条件判断语句可以实现很多功能,我们一起来看看吧!
1、IF语句
if (条件表达式) {
//js语句1
} else { -----格式-----
//js语句2
}
注:if语句可以嵌套,当js语句只有一条时可以省略不写,但是不推荐,因为容易出现错误,保险起见最好写上括号
var age = prompt('请输入你的年龄:')
if (age >= 18) {
console.log("你已成年,可以进网吧!");
} else {
console.log("孩子,未成年不能进网吧!");
}
2、三元表达式
(条件表达式) ? (js语句1) : (js语句2)------格式------
注:三元表达式可以嵌套,有时候比if语句更好用哟
var age = 20;
age > 18 ? console.log("已成年") : console.log("未成年");
3、SWITCH语句
switch(表达式){
case 值1:
//JS语句1
break;
case 值2:
//JS语句2 ------格式------
break;
default:
//JS语句3
break;
}
注:break的功能是跳出,可有可无,有需要就写。default语句也是可有可无,当没有相匹配的case时,执行default语句
代码如下(示例):
var grade = parseInt(num / 10)
switch (grade) {
case 10:
case 9:
alert("优秀");
break;
case 8:
alert("良好");
break;
case 7:
alert("中等");
break;
case 6:
alert("及格");
break;
default:
alert("不及格");
break;
}
五、巩固练习
本练习需要综合应用所学知识,通过多种条件的综合判断,完成上述要求。
重点难点:闰年的判断,范围的约束以及代码逻辑的整理
参考代码如下,答案不唯一
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script type="text/javascript">
var year = Number(prompt("请输入年份:"))
while (year <= 0 || isNaN(year)) {
alert("年份输入有误,请重新输入")
year = Number(prompt("请输入年份:"))
}
var month = Number(prompt("请输入月份"))
while (month <= 0 || isNaN(month)) {
alert("月份输入有误,请重新输入")
year = Number(prompt("请输入月份:"))
}
switch (month) {
case 2:
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
alert("该月共有29天!")
} else {
alert("该月共有28天!")
} break;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
alert("该月共有31天!")
break;
case 4:
case 5:
case 9:
case 11:
alert("该月共有30天!")
break;
}
</script>
</body>
</html>
总结
本节主要记录了变量的基本使用以及条件判断语句的语法及应用,巩固练习需要综合应用相关知识,逻辑思路要清晰