1 数据类型:
- 数字:整数、浮点数
- 字符串: 单引号、双引号
- 布尔型: true、false
- null型: null
- undefined 型:undefined
1.5 变量作用范围:
js默认情况下,变量以函数为范围。
变量加 var 与 不加 var的区别:前者是局部变量,后者是全局变量。
1.9 常量:
常量一旦赋值,就不能再修改的量。
const varName;
function test(){
var foo = null;
console.info(foo);
foo1 = '张三';
console.info(foo1);
const PI = 3.14159263;
console.info(PI)
}
2 函数:
- 函数定义赋值传址格式
function funName(){}
var varName = funName
var varName = function(){ }
function sum(a,b){
return a + b;
}
var a = sum(1,2);
b = sum;
document.write(b(1,2));
var s = function(a,b) {
return a + b;
}
document.write(s(3,4))
- 闭包:
函数嵌套函数。内部的函数,可以使用外部函数的变量。
function outter(){
var a = "outter"
function inner(){
a = "inner"
console.info(a)
}
console.info("------" + a)
return inner;
}
console.info(outter()())
3 数组
- 一组数据的列表
var arr = []
var arr = array(14,5,2)
3.5
JS中,一切皆对象。
4 正则表达式对象:
test() 方法是一个正则表达式方法。
test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。
以下实例用于搜索字符串中电话号码:
var reg = /^1\d{10}$/
*/
var name = "zhang san";
console.info(name.length)
var reg = /^1\d{10}$/i
console.info(reg.test("18222203832"))
4.5
字符类型判断语句
var a = 20;
// NaN
console.info(isNaN(20 / 'ewe'))
console.info(typeof a)
5
顺序 、 分支 、 循环
- 比较大小
三目表达式 expr ? expr1 : expr2
var a = 50;
var b = 20;
var c = 30;
var max = -Infinity;
if (a > b) {
max = a;
} else {
max = b;
}
if(max < c){
max = c;
}
console.info(max)
// 三目表达式 expr ? expr1 : expr2
// max1 = a > b ? a : b;
max1 = (a > b ? a : b) > c ? (a > b ? a : b) : c;
console.info(max1)
- a++ 先使用,再加1 ++a ,先加1,再使用, a-- \ --a类似
var a = 0;
var b = ++a + 3;
console.info(b)
console.info(a)
- switch语句,注意有必要使用break
a = 1;
switch (a){
case 1:
console.info("11111");
break;
case 2:
console.info("222222");
break;
case 3:
console.info("333333");
break;
default:
console.info("default");
}
- for循环 跟c++一样,不一样的是可以使用for in,例如输出数组
//循环 for in
var arr = [1,2,3,4,5,6,7]
for(i in arr){
console.info(arr[i])
}
// for 循环
for (var i = 0; i < arr.length; i++) {
console.info(arr[i])
}
- while 循环
var i = 0;
while(i < arr.length){
console.info(arr[i])
i++;
}
//do...while 循环,do...while循环,循环体最少执行一遍。
var i = 0;
do {
console.info(arr[i])
i++;
} while(i < arr.length);
- break 跳出循环; continue:跳过本次循环;
for(var i = 0; i <10000;i++) {
if (i % 2 == 0) {
continue;
}
// console.info(i)
}
/**
* 1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
*/
document.write("<div></div>")
for(var i = 1; i <= 9; i++) {
for(var j = 1; j <= i; j++){
document.write(j + " * " + i + " = " + (i * j) + " ");
}
document.write("<br />")
}
6面向对象;单例
- 类
JavaScript是一种基于原型的语言,它没类的声明语句,比如C+ +或Java中用的。这有时会对习惯使用有类申明语句语言的程序员产生困扰。相反,JavaScript可用方法作类。定义一个类跟定义一个函数一样简单。在下面的例子中,我们定义了一个新类Person。
function Person() { }
// 或
var Person = function(){ }
- 对象(类的实例)
我们使用 new obj 创建对象 obj 的新实例, 将结果(obj 类型)赋值给一个变量方便稍后调用。
在下面的示例中,我们定义了一个名为Person的类,然后我们创建了两个Person的实例(person1 and person2).
function Person() { }
var person1 = new Person();
var person2 = new Person();
- this. 方法的调用者
var student = {
name:"张三",
age:29,
sayHello:function(){
//this.方法的调用者
console.info(this.name)
}
}
student.sayHello();
console.info(student.age)
var a = 'age';
console.info(student[a])
7对象:原型链
- 原型及原型链
实例对象寻找原型,原型寻找构造函数,找不到原型再找原型的原型
// 原型
function Student(name,age){
this.name = name;
this.age = age;
}
Student.prototype.sayHello = function() {
console.info(this.name + "说: Hello!")
};
var s1 = new Student("盖伦",100);
s1.sayHello();
var s2 = new Student("盖伦2",100);
console.info(s1);
console.info(s2);
function Person(name,age){
this.name = name;
this.age = age;
}
Person.prototype.shuo = function(){
console.info("Hello world")
}
function User(uname) {
this.uname = uname;
}
User.prototype = new Person()
var u = new User('admin')
u['name'] = '3213223'
console.info(u['name'])
u.shuo();
8 ES6
- 1、箭头函数:函数内容=>函数体
// function(v) {
// return v + 2;
// }
var a = (v,h) => v + h;
console.info(a(5,6));
- 类
class Person123 {
constructor(name){
this.name = name;
}
}
- 3、 继承
class User1 extends Person123{
}
9 模板字符串
var name = "张三";
var age = 20;
var introduce = `
my name is ${name}, my age is ${age}
`;
console.info(introduce)
//lib/math.js
export function sum(x,y){
return x + y;
}
//app.js
import {sum} from "lib/math.js"
sum()