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语句的循环体会执行多次,对象中有几个属性就会执行几次,
每次讲一个属性名赋值给我们定义的变量,我们可以通过它来获取对象中的属性


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,183评论 6 516
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,850评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,766评论 0 361
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,854评论 1 299
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,871评论 6 398
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,457评论 1 311
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,999评论 3 422
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,914评论 0 277
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,465评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,543评论 3 342
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,675评论 1 353
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,354评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,029评论 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,514评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,616评论 1 274
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,091评论 3 378
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,685评论 2 360

推荐阅读更多精彩内容

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