var 关键字用来声明变量,es6中let关键字,声明的变量会受到块级作用域的影响,应用更加广泛
let newaddab=(a,b)=>{return a+b;}匿名函数
console.log(newaddab(333,232));
JavaScript是一种面向对象语言,对象是JavaScript的核心,可以将JavaScript中的对象理解为键值映射。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function check() {
let value=document.getElementsByName("input")[0].value
if(!Number(value)){
alert("请输入正确的年份!");
return;
}
if(Number(value) % 4 ===0 && Number(value)%100 !==0){
alert(value+"年是闰年");
}else if(Number(value) % 400 == 0){
alert(value+"年是闰年");
}else{
alert(value+"年是平年");
}
}
</script>
</head>
<body>
<h1>闰年判断小程序</h1>
<div>
<input type="text" name="input"/><button onclick="check()">检验</button>
</div>
</body>
</html>
var mathFunc=function mathF(a) {
var res=a;
a--;
if(a>0){
res *= mathFunc(a);
}
return res;
}
function reverse2(n){
if(typeof(n) != "number"){
throw "input number please!"
}
let res="";
let temp=n;
while(temp >10){
res += Math.floor(temp%10);
console.log(temp);
temp=Math.floor(temp/10);
}
return res + temp;
}
//将数组进行逆序并放回原数组中
function revarray2(array){
var newarray=[];
for(var i=array.length-1;i >=0;i--){
newarray.push(array[i]);
}
for(var i=0;i<=newarray.length-1;i++){
array[i]=newarray[i];
}
}
//输入一句话,输出最后一个单词的长度
function lastwordlen(str){
let c=0;
for(var i=str.length-1;i>=0;i--){
if(str.charAt(i) === ' '){
return c;
}else{
c++;
}
}
return c;
}
//有一对兔子,从出生后的第三个月起,每个月都生一对兔子,小兔子长到第三个月后,每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数是多少
function tuzishu(n){
if(n <=2){
return 1;
}else{
return tuzishu(n-1)+tuzishu(n-2);
}
}
//水仙花数,三位数,个位数字的立方和等于该数本身,如153
function shuixianhua(){
for(var i=100;i<1000;i++){
let a=Math.floor(i/100);
let b=Math.floor(i/10)%10;
let c=Math.floor(i%10);
if( i === a*a*a+b*b*b+c*c*c){
console.log(i);
}
}
}
function func2(s){
return s > 90 ?"A":(s>=60?"B":"C");
}
//统计字符
function charcount(string){
let char=0;
let fig=0;
let o=0;
for(var i=0;i<string.length;i++){
if(string.charCodeAt(i) >= 'A'.charCodeAt(0) && string.charCodeAt(i) <= 'Z'.charCodeAt(0)){
char++;
}else if(string.charCodeAt(i) >= 'a'.charCodeAt(0) && string.charCodeAt(i) <= 'z'.charCodeAt(0)){
char++;
}else if(string.charCodeAt(i) >= '0'.charCodeAt(0) && string.charCodeAt(i) <= '9'.charCodeAt(0)){
fig++;
}else{
o++;
}
}
return {char:char,fig:fig,o:o};
}
undefined
console.log(charcount("21dsd^%fs dsa"));
VM3197:1 {char: 8, fig: 2, o: 3}
//100m落下,反跳到原高度的一般,10次落地,共多少米,第十次反弹多高
function fantiao(){
let h=100;
let sn=h;
let hn=sn/2;
for(var i=0;i<=10;i++){
sn = sn+ 2*hn;
hn=hn/2;
}
return {sn:sn,hn:hn};
}
function houzichitao(){
let day=9;
let a=0;
let b=1;
while(day >0){
a=(b+1)*2;
b=a;
day--;
}
return b;
}
//编程求解 1+2!+3!+...+20!
undefined
function jiecheng(){
let s=0;t=1;
for(var i=1;i<=20;i++){
t=t*i;
s=s+t;
}
return s;
}
ECMAScript 是一种基于对象的脚本语言,语言内置的许多对象。
var teacher={}
typeof teacher
使用new关键字在构造对象时实际上执行了3个操作,首先创建一个空的对象建立原型链,之后执行构造函数,将函数中的this关键字与新建的对象进行绑定,最后将这个新建的对象返回。
数组对象的构造方法,Array()如果只传入一个参数且为数值,返回一个固定长度的空数组对象,若传入多个参数或非数值对象的参数,创建数组,且将参数作为数组中的元素
var student=new Object();
undefined
student.name="lucy";
"lucy"
student.age=24;
24
student.learning=function(){
console.log("learning.....");
}
ƒ (){
console.log("learning.....");
}
student.name
"lucy"
Object.defineProperty(student,"name",{
configurable:true,
enumerable:true,
writable:true,
value:"july"
});
{name: "july", age: 24, learning: ƒ}
student.name
"july"
Object.defineProperty(teacher,"number",{
value:10001,
enumerable:false
});
{name: "jaki", age: 24, teachering: ƒ, number: 10001}
console.log(teacher.value);
VM5165:1 undefined
undefined
console.log(teacher.number);
VM5197:1 10001
undefined
for(props in teacher){
console.log(props);
}
VM5279:2 name
VM5279:2 age
VM5279:2 teachering
undefined
var obj={};
undefined
Object.assign(obj,teacher,teacher2);
{name: "jaki", age: 24, teachering: ƒ, subject: "javascript"}
console.log(obj.name,obj.age,obj.subject);
VM5459:1 jaki 24 javascript
undefined
obj.teachering();
VM4946:5 teachering
undefined
obj.number
function People(name,age){
this.age=age;
this.name=name;
}
undefined
function Teacher(name,age,subject){
this.init=People;
this.init(name,age);
delete this.init;
this.subject=subject;
this.teachering=function(){
console.log("教师"+this.name+",挣扎在教授·"+this.subject+"课程");
};
}
undefined
var jaki=new Teacher("jaki",25,"Javascript");
undefined
jaki.teachering
ƒ (){
console.log("教师"+this.name+",挣扎在教授·"+this.subject+"课程");
}
jaki.teachering();
VM6269:7 教师jaki,挣扎在教授·Javascript课程
undefined
var a=[1,2,3,4,5,6,7,8,9]
a.sort(function(a,b){
var sign=(Math.random()>0.5)?1:-1;
return (a-b)*sign;
});
//编写函数,去除数组中的重复元素
箭头函数中this的固化
在普通函数中,this默认指向调用函数的对象,可以用call、apply、bind这些函数进行this指向的更改,箭头函数,this是固化的,在定义函数时就已被绑定,不能修改。
一、promise
1、promise是一个代理对象,它和原先要进行的操作并无关系。
2、它通过引入一个回调,避免更多的回调。
二、promise的3个状态
1、pending(待定):初始状态
2、fulfilled(实现):操作成功
then确实会返回一个promise,但是如果不手动return Promise,那么默认返回的promise状态就是resolved,值看你return的是啥了,不写return的话,值是undefined,return非promise,那么值就是这个非promise。而手动return Promise,那返回的promise状态就不一定是resolved了,因此就可以改变下一个then/catch调用的结果了。