基础复习(1)|青训营笔记

67 阅读6分钟

这是我参与「第五届青训营」笔记创作活动的第12天。

由于自身js十分薄弱,还是决定先打好基础再进行深入学习。

一、输出语句

alert("xxm"); //弹窗内容
document.write("xxm"); //在body中输出内容
console.log("xxm"); //向控制台输出内容

二、 JS 编写位置

别的不重要,引用外部 js 文件:

<script type="text/javascript" src="js/script.js"></script>

三、基本语法

字面量: 不可变的量,字面量可直接使用

变量: 变量可以保存字面量,变量值可改变

声明变量: 在 js 中使用 var 关键字来声明变量

var xxm = 666; //声明和赋值

标识符: 自主命名的都是标识符,变量名、函数名、属性名都是标识符

命名规则:

1. 可以含有字母、数字、_、$

2. 不能数字开头

3. 不能是 ES 中的关键字、保留字符

4.驼峰命名法

数据类型: 即字面量类型,一共有六种。

  • 基本数据类型
  1. String
var str = "xxm";

在字符串中可以使用 \ 作为转义字符

  1. Number

包括整数和浮点数,进行浮点运算不一定精确

console.log(typeof xxm); //可以使用运算符 typeof 来检查变量类型
console.log(Number.MAX_VALUE); //js中的最大值
console.log(Number.MIN_VALUE); //js中的最小的正值
//两个特殊情况
console.log(typeof Infinity); //number
console.log(typeof NaN); //number
  1. Boolean 布尔值
var bool1 = true;
var bool2 = false;
  1. Null

用来表示空对象

var a = null;
console.log(typeof a); //object
  1. Undefined

用来表示未定义,声明了变量,但没有给变量赋值

var a = undefined;
console.log(typeof undefined); //undefined
  1. Object 引用数据类型
  • 强制类型转换
  1. 将其他数据类型转换为 String

    1.1 调用被转换数据类型的 toString( ) 方法

var a = 123;
a = a.toString();
//两个特殊情况
//null 和 undifined 没有这个方法,会报错

1.2 调用 String( ) 函数,并将被转换的数据作为参数传递给函数

//String(null) 转为 “null”
//String(undifined) 转为 “undifined”
  1. 将其他数据类型转换为 Num

2.1 使用 Number( ) 函数

~如果字符串有非数字内容,则转换为 NaN

~如果字符串为空,则转换为 0

~true --> 1,false --> 0

~null --> 0,undefined -->null

2.2 parseInt( ) 和 parseFloat( )

~可以取字符串中的数,非字符串会转换为字符串再 取数

var a = "123a567b"
a = parseInt(a);
console.log(typeof a); //number
console.log(a); //123

补充:其他进制数

~16 进制:以 0x 开头

~ 8 进制:以 0 开头

~ 2 进制:以 0b 开头

a = parseInt(a,10); //不同进制数浏览器可能会有不同解析,第二位是进制
  1. 将其他数据类型转换为 Boolean

3.1 使用 Boolean( ) 函数

~数字除了 0 和 NaN 都是true

~字符串除了空串 都是true

~null 和 undifined 都是 false

~对象也会转换为 true

运算符:也叫操作符

  • 分类
  1. 算数运算符 + - * / %(%取模运算)

~对非 Number 类型运算会先转换为 Number

~任何值和 NaN 运算为 NaN

~字符串进行加法运算会拼接

~字符串和其他加法运算时,会先转换为字符串,再拼接

除了加法都是会转换成数字

var c = 123;
c = c + ''; //隐式转换为字符串
c = String(c); //两者等同
var d = "123";
d = d - 0; //隐式转换为数值
d = Number(d);
  1. 一元运算符 + -(正负)++ --

~非 Number 先转换为 Number 后负值

var a = "xxm";
a = +a //可以隐式转换为数字类型

自增自减问题:

a++ 先运算后自增(值为它本身),++a先自增后运算(值为 a+1)

  1. 逻辑运算符 ! && ||
var a = "xxm";
a = !!a; //可以隐式转换为布尔类型

~&& 两个都对是 true,|| 两个都错是 false,js 中是短路 && ||

所以:&& 中如果第一个是 false 不会看后面的值,|| 第一个是 true 不看后面的

~非布尔值运算会转换为布尔值后进行运算,再返回值

&&:第一个是 true 返回后面的,第一个是 false 直接返回

||:第一个是 true 直接返回,第一个是 false 返回后面一个*

  1. 赋值运算符 = += -= /= *= &=
  2. 关系运算符 > < >= <= == != === !==

~数值比较结果为 Boolean

~只有一个非数值比较会转化为数值,两个都是字符串就不会转换,比较 unicode,一位位进行比较

补充:unicode ----> 控制台中:\xxxx // 网页中:&#十进制

~关于 ==

会做自动的类型转换(=== 不会做类型转换)

console.log(0 == null); //false
console.log(undefined == null); //true
console.log(NaN == NaN); //false NaN 不和任何值相等,包括它本身
//用 isNaN() 来检查是否是 NaN
console.log(isNaN(a)); 
  1. 条件运算符 条件表达式?语句1:语句2;

四、几个语句

补充:

  1. 可以给循环加 label
label:
循环语句
break label; //终止label循环
  1. 开启计时器可以计算程序性能
console.time("名字");
console.timeEnd("名字");
  1. 取根号语句
Math.sqrt(num);

五、对象

object分类

  1. 内建对象

由 ES 标准中定义的对象

如:Math,String,Number,Boolean,Function,Object

  1. 宿主对象

由 JS 的运行环境提供的对象

如:BOM,DOM

  1. 自定义对象

由开发人员自己创建的对象

自定义对象部分

object 的使用(增删改查)

  1. 创建对象
    var obj = new Object(); //new关键字调用的函数是构造函数constructor
  1. 添加属性
    obj.name = "xxm";  //对象. 属性名 = 属性值;
    obj.gender = "girl";
    obj.age = "18";
    //另一种方法
    var obj2 = {
      name: "xxm",
      age: 18,
      gender: "girl"
    };
  1. 读取属性
console.log(obj.age); //对象.属性名;
// 如果读取没有的属性,不会报错,会返回 undifined
  1. 删除属性
delete obj.name;

补充:

  1. 如果使用特殊的属性名(不重要,不用就行了)
obj["123"] = 789;
  1. in 运算符

用来检查对象中是否含有制定属性

console.log("xxm" in obj); //true
  1. obj2 = obj 的问题

对象保存的是地址

对象比较时,如果地址不一样值一样,也是不同的

工厂方法创建对象

    function createPerson(name , age , gender){
      var obj = new Object();
      obj.name = name;
      obj.age = age;
      obj.gender = gender;
      obj.sayName = function(){
        alert(this.name);
      };
      return obj;
    }
    var obj2 = createPerson("xixi", "28", "女");

函数

函数也是一个对象,用于封装功能(代码形式)。

函数的定义

  1. 创建函数对象
//第一种 不用它
var fun = new Function(); //很少用,主要记住函数也是对象
//第二种 使用函数声明来创建函数
function 函数名([形参1], [形参2]){ //方括号代表可写可不写
  语句
}
//第三种 使用函数表达式创建函数,等同于将匿名函数赋值
var 函数名 = function([形参1], [形参2]){
  语句
}
  1. 调用函数
fun();

函数的参数

  1. 形参
function sum(a,b){ //等同于var a;var b;
 console.log(a+b);
}
  1. 实参

对象也可以作为实参

sum(1,2){ //等同于var a = 1;var b = 2;

补充:

  1. 立刻执行函数:
(function(){
  console.log(a + b);
)(1,2);
  1. 方法:对象的属性是一个函数,调用其就称调用对象的方法(就是个名字)
  1. for ... in 语句:枚举对象的属性
for(var n in obj){
  console.log("属性名:" + n);
  console.log("属性值:" + obj[n]);
}

构造函数

  1. 首字母大写
  2. 执行过程:立即创建一个新对象,将新建对象设置为函数中的this,执行函数中的代码,将新建的对象作为返回值返回
function Person(){
}
var per = new Person();

补充:instanceof 检查对象是否是函数的实例

对象 instanceof 构造函数

第二个参数是匹配模式

i---忽略大小写

g---全局匹配模式