js进阶
函数
JavaScript中的函数和Python中的非常类似,只是定义方式有点区别。
1.最基础函数
function f1() {
console.log("hello world");
}
f1();
2.带参数的函数
function f2(name,age) {
console.log("姓名:" +name+ "年龄:" +age)
}
f2("alex",18);
3.带返回值的
function f3(arg1,arg2) {
var ret=arg1+arg2;
return ret;
}
var s=f3("alex","h");
console.log(s);
4.匿名函数
var sum=function (arg1,arg2) {
return arg1+arg2;
};
ret=sum(1,2);
console.log(ret);
函数的全局变量和局部变量
局部变量
在javascript函数内部声明的变量(使用var)是局部变量,所以只能在函数内部访问他(该变量的作用域
是函数内部)。只要函数运行完毕,本地变量就会被删除。
全局变量
在函数外声明的变量是全局变量,网页上的所有脚本都能访问他。
变量生存周期
javascript变量的生命周期从他们被声明的时间开始。
局部变量会在函数运行以后被删除。
全局变量会在页面关闭后被删除。
函数的作用域
在函数内部查找变量,找不到就到外层函数查找,逐步找到外层。
1.
var city="beijing";
function f() {
var city="shanghai";
function inner() {
var city="shenzhen";
console.log(city);
}
inner();
}
f();
答案:shenzheng
2.
var city="beijing";
function bar() {
console.log(city);
}
function f() {
var city="shanghai";
return bar;
}
var ret=f();
ret();
答案:beijingvar city="beijing";
function f() {
var city="shanghai";
function inner() {
console.log(city);
}
return inner;
}
var ret=f();
ret();
答案:shangahi
Date对象
1.创建Date对象
//方法一:不指定参数的时候就会打印当前时间
var d1=new Date();
console.log(d1.toLocaleString());
//方法二:具体指定就会按照指定的打印,
var d2=new Date("2004/3/20 11:20");
console.log(d2.toLocaleString());
//但是只写两位就会是 月、日、年 的顺序
var d3=new Date("04/03/20 11:20");
console.log(d3.toLocaleString());
//方法三 这个参数意思是从1970年开始往后计算,单位是毫秒
var d4=new Date(500000);
console.log(d4.toLocaleString());
console.log(d4.toUTCString());
//方法四 参数为年月日小时分钟毫秒,毫秒不直接显示
var d5=new Date(2004,2,20,11,10,0,300);
console.log(d5.toLocaleString());
2.Date对象的方法
var d = new Date();
getDate() 获取日
getDay () 获取星期
getMonth () 获取月(0-11)
getFullYear () 获取完整年份
getYear () 获取年
getHours () 获取小时
getMinutes () 获取分钟
getSeconds () 获取秒
getMilliseconds () 获取毫秒
getTime () 返回累计毫秒数(从1970/1/1午夜)
3.练习
// 将当前日期按“2017-12-27 11:11 星期三”格式输出。
function getNow() {
var d=new Date(); //获取当前日期对象
var dYear=d.getFullYear(); //获取当前年份
var dMonth=d.getMonth(); //获取当前月份
var dDate=d.getDate(); //获取当前日期
var dHour=d.getHours(); //获取当前小时
var dMinute=d.getMinutes();//获取当前分钟
var dWeek=d.getDay(); //获取当前星期
var weekStr=["星期日","星期一","星期二","星期三","星期四","星期五","星期六","星期六"];
if (dMinute<10){
dMinute="0"+dMinute;
}
console.log(dYear + "-" + dMonth + "-" + dDate +" " + dHour + ":" + dMinute + "" + weekStr[dWeek] );
}
getNow();
JSON对象
var o={"name":"lb","age":18};
// 对象转换成json字符串
var s=JSON.stringify(o,typeof o);
console.log(o,typeof o);
console.log(s,typeof s);
// 反序列化(json字符串转换成对象)
var b=JSON.parse(s);
console.log(b,typeof b);
正则相关(RegExp对象)
//正则相关的示例
// 方式1
//第一个参数:正则表达式
//第二个参数:匹配模式
var r1=new RegExp("^[a-zA-Z][a-zA-Z0-9]{5,11}$","g");
// var s1="alex123";
// var s2="123alex";
var s3="ssd123as";
//测试的时候返回的应该是true和false
// console.log(r1.test(s1));
// console.log(r1.test(s2));
console.log(r1.test(s3));
console.log(r1.test());
// 方式2
var reg2 = /^[a-zA-Z][a-zA-Z0-9_]{5,11}$/g;
var s1="alex123";
console.log(reg2.test(s1));
// =====string对象与正则结合的4个方法=====
var s2 = "hello world";
console.log(s2.match(/o/g)); //查找字符串中符合正则的内容
console.log(s2.search(/d/)); //查找字符串中符合正则表达式的内容位置
console.log(s2.split(/o/g)); // 按照正则表达式对字符串进行切割
console.log(s2.replace(/l/g,"s")); //对字符串按照正则进行替换
========g和i的简单示例========
var s1 = "name:Alex age:18";
console.log(s1.replace(/a/, "哈哈哈")); // "n哈哈哈me:Alex age:18"
console.log(s1.replace(/a/g, "哈哈哈")); // "n哈哈哈me:Alex 哈哈哈ge:18" 全局匹配
console.log(s1.replace(/a/gi, "哈哈哈")); // "n哈哈哈me:哈哈哈lex 哈哈哈ge:18" 不区分大小
Math对象
var a =Math.abs(-60); //返回数的绝对值。
console.log(a);
var b =Math.exp(-60); //返回 e 的指数。
console.log(b);
var c=Math.floor(30); //对数进行下舍入。
console.log(c);
var d=Math.log(30); //返回数的自然对数(底为e)。
console.log(d);
var e=Math.max(20,30);//返回 x 和 y 中的最高值。
console.log(e);
var f=Math.min(40,60);// 返回 x 和 y 中的最低值。
console.log(f);
var g=Math.pow(2,3);// 返回 x 的 y 次幂。
console.log(g);
var h=Math.random(10,20,30,40);// 返回 0 ~ 1 之间的随机数。
console.log(h);
var i=Math.round(20.9);// 把数四舍五入为最接近的整数。
console.log(i);
var j=Math.sin(60);// 返回数的正弦。
console.log(j);
var k=Math.sqrt(4); // 返回数的平方根。
console.log(k);
var l=Math.tan(60); // 返回角的正切。
console.log(l);