ES

字面量和变量

  • 字面量实际上就是一些固定的值,比如 1 2 3 4 true false null NaN “hello”。字面量都是不可以改变的。
  • 变量可以用来保存字面量,并且可以保存任意的字面量

数据类型

  • js的变量是由JS引擎根据“=”右边的值来判断的,引擎编译完成后就确定了变量的数据类型
  • JS 拥有动态类型,意味着相同的变量可用作不同的类型
  • 数据类型分为两类:1、基本数据类型; 2、引用数据类型
  1. 基本数据类型(Number,String,Boolean,Undefind,Null)
简单数据类型 说明 默认值
Number 数字型,包括整型和浮点型。 0
String 字符串类型。注意,在js里面字符串要带引号 ""
Boolean 布尔值类型,如:true、false,等价于1和0 false
Undefined var = a 。声明了变量a但是没有赋值,此时a=undefined undefind
Null var a = null。声明了变量a为空值 null
  • Number:

<1、js中八进制前面加0,十六进制前面加0x;

<2、数值的最大值和最小值alert(Number.MAX_VALUE)和alert(Number.MIN_VALUE),

<3、无穷大(Infinity),无穷小(-Infinity),非数值(NaN)

isNaN(变量名)这个方法用来判断非数字,并返回一个值,若为数字则返回false,若为非数字则返回true

  • String

<1、字符串长度:变量名.length

<2、字符串拼接:字符串和其他类型相拼接,最终结果是字符串类型

  • Boolean

布尔值主要用来进行逻辑判断,布尔值只有两个

true 逻辑的真

false 逻辑的假

使用typeof检查一个布尔值时,会返回"boolean"

  • Null 空值

空值专门用来表示为空的对象,Null类型的值只有一个null

使用typeof检查一个Null类型的值时会返回"object"

  • Undefined 未定义

如果声明一个变量但是没有为变量赋值此时变量的值就是undefined
。该类型的值只有一个 undefined

使用typeof检查一个Undefined类型的值时,会返回"undefined"

  1. 引用数据类型(object)

object对象:

对象(Object)

对象是JS中的引用数据类型

对象是一种复合数据类型,在对象中可以保存多个不同数据类型的属性

使用typeof检查一个对象时,会返回object

对象的分类:

< 1、内建对象

  • 由ES标准中定义的对象,在任何的ES的实现中都可以使用
  • 比如:Math String Number Boolean Function Object…

< 2、宿主对象

  • 由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象
  • 比如 BOM DOM

3.自定义对象

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

创建对象:使用new关键字调用的函数是构造函数,构造函数是专门用来创建对象的函数
语法:

    var obj = new Object();
    console.log(typeof obj);   //输出object

<1 、向对象中添加、更新属性

语法:

对象.属性名 = 属性值;

对象[“属性名”] = 属性值; //这种方式能够使用特殊的属性名

对象的属性名没有任何要求,不需要遵守标识符的规范,但是在开发中,尽量按照标识符的要求去写。

属性值也可以任意的数据类型。

< 2、读取对象中的属性

语法:

对象.属性名

对象[“属性名”] //"属性名"可以使字符串常量,也可以是字符串变量。这种方式会更灵活

如果读取一个对象中没有的属性,它不会报错,而是返回一个undefined

< 3 、删除对象中的属性

语法:

delete 对象.属性名  
delete 对象["属性名"]  

< 4、遍历

使用in检查对象中是否含有指定属性

语法:“属性名” in 对象

如果在对象中含有该属性,则返回true

如果没有则返回false

var obj = {'0':'a','1':'b','2':'c'};  
  
for(var i in obj) {  
     console.log(i,":",obj[i]);  
} 

类型转换

  • 转换为String

<1 、调用toString()方法

   var a = 123;
   a = a.toString();
   //这个方法不适用于null和undefined,由于这两个类型的数据中没有方法,所以调用toString()时会报错

<2 、调用String()函数

    var a = 123;  
    a = String(a); 
    //注意:对于Number Boolean String都会调用他们的toString()方法来将其转换为字符串,
    对于null值,直接转换为字符串"null"。对于undefined直接转换为字符串"undefined"

<3 、为任意的数据类型 +""

    var a = true;  
    a = a + ""; 
    任意基本数据类型和空字符串拼接都会转换为字符串,原理和调用String函数一样
  • 转换为Number

<1 、调用Number()函数

   svar s = "123";  
   s = Number(s); 

转换的情况:

字符串 => 数字

如果字符串是一个合法的数字,则直接转换为对应的数字

如果字符串是一个非法的数字,则转换为NaN

如果是一个空串或纯空格的字符串,则转换为0

布尔值 => 数字

true转换为1

false转换为0

空值 => 数字

null转换为0

未定义 => 数字

undefined 转换为NaN


基础语法

  • 算数运算符

+ 对两个值进行加法运算并返回结果

- 对两个值进行减法运算并返回结果

* 对两个值进行乘法运算并返回结果

/ 对两个值进行除法运算并返回结果

% 对两个值进行取余运算并返回结果

  • 自增

自增可以使变量在原值的基础上自增1

自增使用 ++

自增可以使用 前++(++a)后++(a++)

无论是++a 还是 a++都会立即使原变量自增1

不同的是++a和a++的值是不同的,

++a的值是变量的新值(自增后的值)

a++的值是变量的原值(自增前的值)

  • 自减

自减可以使变量在原值的基础上自减1

自减使用--

自减可以使用 前(a)后(a)

无论是a 还是 a都会立即使原变量自减1

不同的是a和a的值是不同的,

--a的值是变量的新值(自减后的值)

a--的值是变量的原值(自减前的值)

  • 逻辑运算符

!

非运算可以对一个布尔值进行取反,true变false false变true

当对非布尔值使用!时,会先将其转换为布尔值然后再取反

我们可以利用!来将其他的数据类型转换为布尔值

&&

&&可以对符号两侧的值进行与运算

只有两端的值都为true时,才会返回true。只要有一个false就会返回false。

如果第一个值是false,则不再检查第二个值

对于非布尔值,它会将其转换为布尔值然后做运算,并返回原值

规则:
1.如果第一个值为false,则返回第一个值
2.如果第一个值为true,则返回第二个值

||

||可以对符号两侧的值进行或运算

只有两端都是false时,才会返回false。只要有一个true,就会返回true。

如果第一个值是true,则不再检查第二个值

对于非布尔值,它会将其转换为布尔值然后做运算,并返回原值

规则:
1.如果第一个值为true,则返回第一个值
2.如果第一个值为false,则返回第二个值

  • 条件分支语句switch
switch(条件表达式){  
   case 表达式:  
       语句...  
       break;  
   case 表达式:  
       语句...  
       break;  
   case 表达式:  
       语句...  
       break;  
   default:  
       语句...  
       break;  
}  

执行流程:

switch…case…语句在执行时,会依次将case后的表达式的值和switch后的表达式的值进行全等比较,
如果比较结果为false,则继续向下比较。如果比较结果为true,则从当前case处开始向下执行代码。
如果所有的case判断结果都为false,则从default处开始执行代码。


this

我们每次调用函数时,解析器都会将一个上下文对象(this)作为隐含的参数传递进函数。

使用this来引用上下文对象,根据函数的调用形式不同,this的值也不同。

指向当前对象

this的不同的情况:

1.以函数的形式调用时,this是window

2.以方法的形式调用时,this就是调用方法的对象

3.以构造函数的形式调用时,this就是新创建的对象


4.构造函数

构造函数是专门用来创建对象的函数

一个构造函数我们也可以称为一个类

通过一个构造函数创建的对象,我们称该对象时这个构造函数的实例

通过同一个构造函数创建的对象,我们称为一类对象

构造函数就是一个普通的函数,只是他的调用方式不同,

如果直接调用,它就是一个普通函数

如果使用new来调用,则它就是一个构造函数

例子:

function Person(name , age , gender){  
    this.name = name;  
    this.age = age;  
    this.gender = gender;  
    this.sayName = function(){  
        alert(this.name);  
    };  
}  

构造函数的执行流程:

1.创建一个新的对象

2.将新的对象作为函数的上下文对象(this)

4.将新建的对象返回

instanceof 用来检查一个对象是否是一个类的实例

语法:对象 instanceof 构造函数

    function Person(){
        //构造函数Person
    }
    var per = new Person;    
    console.log(per instanceof Person)  //输出结果true

如果该对象时构造函数的实例,则返回true,否则返回false

Object是所有对象的祖先,所以任何对象和Object做instanceof都会返回true

枚举对象中的属性

for…in

语法:

for(var 属性名 in 对象){  
  
}  

for…in语句的循环体会执行多次,对象中有几个属性就会执行几次,
每次讲一个属性名赋值给我们定义的变量,我们可以通过它来获取对象中的属性


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 实习的时候写的学习笔记 如有错误请各位大佬直接留言批判,防止错误的信息会误导他人! ---------------...
    ci鱼丸粗面阅读 587评论 0 0
  • Es6 1.数组 1.扩展运算符 是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参...
    林深不見鹿阅读 262评论 0 0
  • [TOC] 参考阮一峰的ECMAScript 6 入门参考深入浅出ES6 let和const let和const都...
    郭子web阅读 1,915评论 0 1
  • const命令: 声明一个只读常量,一旦声明,声明的值就不能改变 声明的常量和let一样,不可重复声明 本...
    菜菜的小菜鸟阅读 679评论 0 0
  • 前面的话   ES5和ES6致力于为开发者提供JS已有却不可调用的功能。例如在ES5出现以前,JS环境中的对象包含...
    CodeMT阅读 1,714评论 0 2

友情链接更多精彩内容