JavaScript
1.数据类型
1.1 变量
· 变量名区分大小写,允许包含字母、数字、美元符号($)和下划线,但第一个字符不允许是数字,不允许包含空格和其他标点符号
变量命名长度应该尽可能的短;尽量避免使用没有意义的命名;禁止使用JavaScript关键词、保留字全名。`
· 在JavaScript中定义变量时要严格使用变量,在JavaScript代码中第一行写'use strict';注意:IDEA需要设置ES6语法
· **局部变量**使用let定义
i=1;//只写i=1不会报错 'use strict' i=1会报错
·局部变量使用let定义,常量定义用关键字constant
·内部变量不可访问外部变量
function f1(){ var x=1; function f2(){ var y=x+1; console.log(y); } f2(); }
· 内部函数的变量和外部函数的变量重名,优先使用内部函数的变量
function f1(){ var x=1; function f2(){ var x=2; console.log(x); } f2(); }
2.number
·js不区分小数和整数,Number
123 //整数 123.1 //浮点运算符 1.123e1 11.23 -99 //负数 NaN //不是整数 Infinity //无穷大
3.字符串
· 字符串使用单引号或者双引号包裹
\' //可以在字符串中打出符号' \n //表示换行 \t //字符串中间空格大小为tab大小 //也可支持ASK编码或者Ascll字符
· 多行字符串缩写
var msg=`This is a apple`
· 模板字符串(tab上面的``中进行定义)
let name='pengge'; let age=3; let msgs=`你好啊,${name}`
·字符串的相关方法
var student="student"
4.布尔值
trur 、false
5.逻辑运算符
&& 与运算符,两个真则全为真 || 一真全真 !真即假,假即真
6.比较运算符
= //表示负值运算符 == 等于(类型不一样,值一样,也会判断为true) ===绝对等于(类型一样,值一样,会判断为true)
var score1="1"; var score2=1; console.log(score1==score2);//结果为true
7.null和undefined
· null 空
·undefined 未定义
8. 数组
·定义数组
·长度
arr.length
·通过下标索引
.indexof()//根据数组下标索引数组元素 ·slice()//截取数组中的一部分,返回一个新数组 ·push()//向数组尾部添加数据 ·pop()//从数组尾部弹出数据 ·unishift()//从数组头部加入数据 ·shift()//从数组头部弹出数据 ·sort()//对数组元素进行排序 ·reverse()//数组元素反转 ·concat()//不同数组元素拼接
·数组的遍历
age=[12,13,14,15]; //第一种 for(let i=0;i<100;i++){ console.log(age[i]); } //第二种 age.forEach(function(value){ console.log(value); });
9.集合
·遍历Map
·遍历set
10.对象
·每个属性是由键值对构成,属性之间用逗号隔开,最后一个属性不需要添加逗号,取对象/对象属性赋值用person.age。
var person={ name:"pengge", age:23, tags:['js','java'] }
·动态的增删对象的属性
·增加:person.hobby='soccer'
·删除:delete person.name
·判断某个属性是否在对象中
'age' in person
·判断一个属性是否为该对象拥有hasOwnProperty()
person.hasOwnProperty('tostring') //结果:false
11.函数
·函数的定义
//方式一 function abs(x){ if(x>=0){ return x; }else{ return -x; } } //方式二 var abs= function (x){ if(x>=0){ return x; }else{ return -x; } }
一旦执行到return 代表函数结束,返回结果;如果没有执行return,函数执行也会返回结果,结果解释undefined;调用时使用方法名+参数
·传递参数超出限定处理
//方式一abs(1,2,3) var abs= function (x){ for (var key of arguments) { console.log(key); } if(x>=0){ return x; }else{ return -x; } } arguments数组保存的数据为1,2,3 //方式二abs(1,2,3) var abs= function (x,...rest){ for (var key of rest) { console.log(key);//2,3 } if(x>=0){ return x; }else{ return -x; } } rest数组中保存的字符为2,3
arguments将超出的部分以数组的形式保存起来
12.面向对象编程
1.对象名.proto
var student={ age:23, fly:function(){ console,console.log(this.name+"can fly"); } }; var xiaoming={ name:"xiaoming" }; xiaoming.__proto__ =student;//小明以student为模板
2.class关键字
1.定义一个类,属性,方法
class Student{ constructor(name){ this.name; } hello(){ alert('hello'); } } var xiaoming=new Student("xiaoming"); //在new一个对象时,会调用该类的构造方法,比如此例子中将xiaoming传给constructor的name,使小明的name为xiaoming
2.继承
class Student{ constructor(name){ this.name; } hello(){ alert('hello'); } } class monitor extends Student{ constructor(name,grade){ super(name);//子类继承弗雷德构造方法 this.name=name; this.grade=grade; } } var person1=new monitor("xiaoming",98)
补充Java内容:
·子类实例化对象时,会先调用父类的构造器 ·如果子类的构造器没有显示的调用父类的构造器 ,默认调用super(); ·子类要使用父类有参的构造器,使用super(参数)形式,且super必须是子类构造方法中的头一条语句。 ·如果父类没有不带参数的构造器,且子类的构造器中又没显示的调用父类其他构造器,则Java编译器将报告错误。