昨天的内容对JS是什么,能干什么做了简单的解释,介绍了JS的三种输出语句,变量,数据类型,以及一些简单的运算,今天的内容会对昨天的学习内容有一定的补充和拓展,希望能够和大家一起学习和进步。
特殊的值
我们昨天有学到几个特殊的值;
null
undefined
NaN (not a number) :非数字的集合,不等于任何值;六亲不认,不会和任何人相等,包括自;
console.log(null === null);
console.log(undefined === undefined);
//以上两个特殊的值是等于自己的;
// 两个等号判断的是值相等
console.log(null == undefined); // JS规定(和我们的理解不太一样,需要额外记忆)
// true转数字
console.log(2 == true); // false
console.log(NaN === NaN); // false (NAN并不等于自己,它可以是任意值)
判断是否为数字或者NAN的方法
//isNaN()用于判断是NaN
console.log(isNaN(x));
//!isNaN()用于判断是数字
console.log(!isNaN(x));
拓展:
// 字符串和字符串比较的时候,比较ASCLL值
console.log('a' < 'b');
console.log('a' > 'A');
//字符串的比较,是一位一位的比
console.log('212' > '2') //false
(首先是第一位数字和后面的数字做比较,如果是一样的话,就第二位和后面的数字比较,一位一位比)
//字符串和数字比较的值 转数字进行比较
console.log('12'>2)
比较ASCLL值的网址:ASCII码对照表
Math对象
随机数
//Math.random()产生【0-1)的随机数,包含0不包含1
eg: // 取10-20之间的随机数
var y =Math.random();
y = y * 10;
y = y + 10;
console.log(y);
eg: // 0-100之间的随机数
// x = x * 100 ;
x *= 100 ;
console.log(x);
向上取整
Math.ceil()向上取整
向上 天花板 ceil
x = Math.ceil(x); 取到较大值的概率大
console.log(x);
向下取整
Math.floor()向下取整
向下 底部 floor
x=Math.floor(x); 取不到最大值,取到较小值的概率大
console.log(x);
四舍五入取整
Math.round()四舍五入取整
x = Math.round(x);
console.log(x);
最大值和最小值
通过max和min找出一串数中的最大值和最小值是什么
var min = Math.min(3 , 2 , 32 , 1 , 0) ;
console.log(min);
var max = Math.max(3 , 2 , 32 , 1 , 0) ;
console.log(max);
拓展:
计算机精度丢失问题
//计算机的计算能力有限,大部分时候算的清楚但是偶尔会有误差
//精度丢失不仅是JS的问题,而是计算机的问题
解决方式:
1.四舍五入取整,取小数点
2.小数化为整数
console.log(0.1+0.2); //0.3000000000004
//(0.1*10 + 0.2*10)/10
小结:
产生0-1之间的随机数 x
产生0-任何值max之间的随机数 x*max
产生min-max之间的随机数 x*(max-min)+min
// 产生min-max之间的随机数 x * (max - min) + min
// var x = Math.random() ;
// var y = x * (max - min) + min ;
// y = Math.round(y)
// var a = Math.round(Math.random() * (max - min) + min)
var a = Math.round(Math.random() * (20 - 10) + 10) ;
console.log(a);
// a = (Math.random() * (max - min) + min)
总结以上可以简写为:
var a =Math.round ( Math.random() * (max - min) +min)
通过以上学习,可以做出一个随机数值,并单独列出其中的每一位;或者通过一个随机数假设它是以秒为单位,计算出这个数值可以转化为多少小时多少分钟多少秒;
// 10-20之间
var x = Math.random() ;
var y = x * (20 - 10) + 10 ;
// y = Math.round(y) y = Math.ceil(y) 都可以取到最大值
y = Math.floor(y) // 取不到最大值
var si = Math.random() ;
// si = si * (10000 - 1000) + 1000 ;
// si = Math.floor(si)
si = si * (9999 - 1000) + 1000 ;
si = Math.round(si) ;
// 1234
var qian = Math.floor(si / 1000) ;
// 234
var bai = Math.floor(si % 1000 / 100) ;
// 34
var shi = Math.floor(si % 100 / 10) ;
var ge = Math.floor(si % 10 / 1) ;
// 3682s 小时,分钟,秒 1 1 22s
var s = 3682 ;
var day = Math.floor(s / (24 * 3600)) ;
var hour = Math.floor(s % (24 * 3600) / 3600) ;
var minute = Math.floor(s % 3600 / 60) ;
var second = s % 60 ;
console.log(hour , minute , second);
操作标签对象
// 认识对象 : 属性 + 方法(函数)
// 对象.姓名
// 对象.性别
// 对象.爱好
// 对象.敲代码('hello world')
// 带括号的叫函数
// console.log()
// Math.random() 函数 0-1
// Math.floor()
在文档中找到ID为括号中内容的元素: document.getElementById()
绑定点击事件:a.onclick = function (){}
判断语句
程序的三大流程控制语句
顺序结构 从上而下执行代码
选择结构 判断
循环结构 重复的做一件
选择结构
单分支语句:
有条件的执行代码
语法:if(条件){
条件满足时执行的代码
}
不建议写,执行效率低,每一条单分支语句都会执行判断
双分支语句:
语法:if(条件){
条件满足执行的代码
}
else{
条件不满足的代码
}
多分支语句:
if(条件){
条件满足执行的代码
}
else if(条件2){
条件不满足的代码
}
else if(条件3){
条件不满足的代码
}
//底下的else可有可无
else{
以上条件都不满足
}
双分支语句和多分支语句相较于单分支语句执行起来更简单,找到自己需要的值之后就会结束操作。
if语句是可以进行嵌套使用的
if(){
if(){
}
}