// 在预解析的过程中如果函数和变量的名字相同,此时函数优先
var a;
function a(){
console.log('aaaaa');}
console.log(a);
a = 1;
console.log(a);
---------------------------------
function f1(){
var a;
a = b = c = 9;
console.log(a); // 9
console.log(b); // 9
console.log(c); // 9
}f1();
console.log(c); // 9
console.log(b); // 9
console.log(a); // 报错
10、计算时间差,返回相差的天/时/分/秒
// 计算时间差,返回相差的天/时/分/秒
//1 两个日期对象如何相减
var d1 = new Date();
var d2 = new Date(2017, 9, 1);
// d2.valueOf() - d1.valueOf()
console.log(d1 - d2); // 4692437476 两个时间相差的毫秒数
//4692437476 相差的总的毫秒值
//相差的天数 = 4692437476 / 1000 / 60 / 60 / 24
//相差的小时数 = 4692437476 / 1000 / 60 / 60 % 24
//相差的分钟数 = 4692437476 / 1000 / 60 % 60
//相差的秒数 = 4692437476 / 1000 % 60
function getInterval(start, end){
// 两个日期对象,相差的毫秒数
var interval = end - start;
// 求 相差的天数/小时数/分钟数/秒数
var day, hour, minute, second;
// 两个日期对象,相差的秒数
// interval = interval / 1000;
interval /= 1000;
day = Math.round(interval / 60 / 60 / 24);
hour = Math.round(interval / 60 / 60 % 24);
minute = Math.round(interval / 60 % 60);
second = Math.round(interval % 60);
return{day: day,hour: hour,minute: minute,second: second
}}
var d1 = new Date();
var d2 = new Date(2017, 9, 1);
var o = getInterval(d2, d1);
console.log(o);
9、写一个函数,格式化日期对象,返回yyyy-MM-dd HH:mm:ss的形式
function formatDate(date){
var year = date.getFullYear(),
month = date.getMonth() + 1,
day = date.getDate(),
hour = date.getHours(),
minute = date.getMinutes(),
second = date.getSeconds();
month = month < 10 ? '0' + month: month;
day = day < 10 ? '0' + day: day;
hour = hour < 10 ? '0' + hour: hour;
minute = minute < 10 ? '0' + minute: minute;
second = second < 10 ? '0' + second: second;
//return year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second;
console.log(year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second);}formatDate(new Date());
// var d = new Date();
// var dateStr = formatDate(d);
// console.log(dateStr);
// var d = new Date(2017, 8, 10);
// var dateStr = formatDate(d);
// console.log(dateStr);
8、Date,Math
1.0 Date案例,
1、写一个函数,格式化日期对象,返回yyyy-MM-dd HH:mm:ss的形式
2、计算时间差,返回相差的天/时/分/秒
3、函数如何返回多个值
4、如何计算相差的 天/时/分/秒
// 写一个函数,格式化日期对象,返回yyyy-MM-dd HH:mm:ss的形式
// function formatDate(date){
// // 判断参数date是否是日期对象
// // instanceof instance 实例(对象) of 的
// // console.log(date instanceof Date);
// if (!(date instanceof Date)){
// console.error('date不是日期对象')
// return;
// }
// var year = date.getFullYear(),
// month = date.getMonth() + 1,
// day = date.getDate(),
// hour = date.getHours(),
// minute = date.getMinutes(),
// second = date.getSeconds();
// // if (month < 10){
// // month = '0' + month;
// // }
// month = month < 10 ? '0' + month: month;
// day = day < 10 ? '0' + day: day;
// hour = hour < 10 ? '0' + hour: hour;
// minute = minute < 10 ? '0' + minute: minute;
// second = second < 10 ? '0' + second: second;
// return year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second;
// }
// var d = new Date();
// var dateStr = formatDate(d);
// console.log(dateStr);
// d = new Date(2017, 8, 10);
// var dateStr = formatDate(d);
// console.log(dateStr);
// 计算时间差,返回相差的天/时/分/秒
//1 两个日期对象如何相减
// var d1 = new Date();
// var d2 = new Date(2017, 9, 1);
// // d2.valueOf() - d1.valueOf()
// console.log(d2 - d1); // 4692437476 两个时间相差的毫秒数
//2 函数如何返回多个值
// function fn(){// return{
// year: 1,
// day: 2,
// hour: 3
// };
// }//3 如何计算相差的 天/时/分/秒
//
//4692437476 相差的总的毫秒值
//相差的总的秒数 = 4692437476 / 1000
//相差的天数 = 4692437476 / 1000 / 60 / 60 / 24
//相差的小时数 = 4692437476 / 1000 / 60 / 60 % 24
//相差的分钟数 = 4692437476 / 1000 / 60 % 60
//相差的秒数 = 4692437476 / 1000 % 60
//
function getInterval(start, end){
// 两个日期对象,相差的毫秒数
var interval = end - start;
// 求 相差的天数/小时数/分钟数/秒数
var day, hour, minute, second;
// 两个日期对象,相差的秒数
// interval = interval / 1000;
interval /= 1000;
day = Math.round(interval / 60 / 60 / 24);
hour = Math.round(interval / 60 / 60 % 24);
minute = Math.round(interval / 60 % 60);
second = Math.round(interval % 60);
return{day: day,hour: hour,minute: minute,second: second
}}
var d1 = new Date();
var d2 = new Date(2017, 9, 1);
var o = getInterval(d1, d2);
console.log(o);
1.1 Date
var d = new Date();
// 打印日期对象的时候。内部调用了toString()
console.log(d);
console.log(d.toString());
console.log(d.toDateString());
console.log(d.toTimeString());
console.log(d.toLocaleDateString());
console.log(d.toLocaleTimeString());
// 获取日期中的指定部分
var d = new Date();
console.log(d.getFullYear());
// !--------注意:月份是从0开始的-------------
console.log(d.getMonth() + 1);
console.log(d.getDate());
console.log(d.getHours());
console.log(d.getMinutes());
console.log(d.getSeconds());
// 获取当前时间的毫秒值 静态成员
var num = Date.now(); // 浏览器兼容问题 HTML5
console.log(num);
var num2 = new Date(); // 浏览器兼容问题 HTML5
console.log(num2);
// 如何获取日期对象的毫秒值
var d = new Date();
// 获取日期对象的毫秒值 不用我们调用
console.log(d.valueOf());
// 和valueOf的作用是一样的
console.log(d.getTime());
// Math 不是一个构造函数,里面提供是静态成员
// var MyMath ={// PI: 3.14,
// max: function (){
// }
// }
// 静态成员
// MyMath.PI
// MyMath.max();
//
// Date 是一个构造函数,首先要通过new Date() 来创建日期实例(对象),实例成员
// var d = new Date();
console.log(d);
// GMT 格林威治时间 世界标准时间
// GMT+0800 (中国标准时间)
//
// 距离1970-1-1相差的毫秒数
console.log(d.valueOf());
6、静态成员和实例成员
var MyMath ={PI: 3.1415926,
max: function (){},
min: function (){}}
// 工具中使用静态成员
// 静态成员 : 直接使用对象来调用的
console.log(MyMath.PI);
// MyMath.max()
//
// 当有很多个对象的时候 使用构造函数的形式来创建对象
// 实例成员 : 构造函数中的成员就是实例成员
// 什么是实例:对象的另一种说法
function Person(name, age){
this.name = name;
this.age = age;
this.sayHi = function (){
console.log("sayHi");}}
// 通过构造函数创建对象
var p = new Person('zs', 18);
p.sayHi();
5、js自带函数
Math.max
var arr = [1,3,2,9,6];
console.log(Math.max(1,3,2,9,6));
console.log(Math.max.apply(null, arr));
var MyMath ={max: function (){
var max = arguments[0];
for (var i = 1; i < arguments.length; i++){if (max < arguments[i]){
max = arguments[i];}}
return max;},
min: function (){
var min = arguments[0];
for (var i = 1; i < arguments.length; i++){if (min > arguments[i]){
min = arguments[i];}}
return min;}};
console.log(MyMath.max(10, 1, 100, 20));
console.log(MyMath.min(10, 1, 100, 20));
4、取10-20之间的随机整数
var num1 = 10;
var num2 = 20;
var arry = [];for(var i=0;i<20;i++){
var suiji = Math.floor((num2-num1+1)*Math.random())+num1;
arry.push(suiji);}alert(arry);
3、 生成 min 到 max 之间的随机数,parseInt() 函数可解析一个字符串,并返回一个整数。
var min = 10;
var max = 100;
console.log(parseInt(Math.random() * (max - min) + min));
2、优化数组排序 – 冒泡排序
var num = 0;
function sort(array){
for (var i = 0; i < array.length -1; i++){
var isSort = true;
for (var j = 0; j < array.length -1 - i; j++){ //num = 9
num++;
if (array[j] > array[j+1]){
isSort = false;
var tem = array[j];
array[j] = array[j+1];
array[j+1] = tem;}}// 判断是否排好了
if (isSort){
break;}}}
var array = [34, 12, 88, 20, 30];sort(array);
console.log(array);
console.log(num);
1、数组排序-- 冒泡排序
var num = 0;
function sort(array){
for (var i = 0; i < array.length; i++){
console.log(i+"##########");
// for (var j = 0; j < array.length; j++){ num = 20
// for (var j = i; j < array.length; j++){ num = 15
for (var j = array.length-1; j > i; j--){ //num = 10
console.log(array[i]);
console.log(array[j]);
console.log(i+"//");
num++;
if (array[i] > array[j]){
var tem = array[i];
array[i] = array[j];
array[j] = tem;}}}}
var array = [34, 12, 88, 20, 30];sort(array);
console.log(array);
console.log(num);