一、数据类型

javascript是弱数据类型语言,不需要显式的定义类型,一共有如下六种数据类型

五种基本类型:number,string,boolean,null,undefined

一种复合类型:object  对象:Function,Array,Date,Math,...

类型检测:

typeof ***:基本类型检测

*** instanceof ***:复合类型检测,左操作数对象的原型链上是否有右边构造函数prototype

二、表达式和运算符

表达式是指能计算出值的任何可用程序单元

原始表达式:常量、直接量  3.14,“test”

      关键字    null,this

      变量     i,k,j

表达式含:原始表达式

     初始化表达式

     函数表达式

     属性访问表达式

     调用表达式

     对象创建表达式

运算符:一元  +num,i++

    二元  a+b

    三元  c?a:b

按功能:赋值、比较、算术、位、逻辑、字符串、特殊

三、语句

程序由语句组成,语句遵守特定语法规则

块 block  {}   没有块级作用域

声明    var

异常   try catch finally

函数声明  function fd(){}   前后都可以引用

函数表达式 var fe=function(){}  只能在后面引用

遍历  for in

条件判断 switch(val) { care; default }

循环 while{} do{} for(){}

严格模式 'use strict'

不允许用with,不允许未声明变量赋值,delete参数和函数报错, 不允许重复属性

四、对象

对象的结构:包含一系列无序的属性,每个属性都有字符串key和对应的值

创建对象:对象字面量、new/原型链、Object.create

对象的属性操作:读写  obj.x 或 obj['x']

        异常  不存在等

        删除  delete obj.x 或 delete obj['x'],重复删除为true,原型链上的属性不能删除

        检测  'x' in obj包括属性在对象或对象 原型链上均为true

        枚举

对象的get/set:不一样的属性读写,get默认设置函数,set赋值函数

属性标签:设置obj.defineProperty(obj,'x',{configurable:false,writable:false,enumerable:true,value:'123'})

对象的序列化: JSON.stringify(obj)

对象方法: toString valueOf等

五、数组

数组:值的有序集合

创建数组:字面量,构造器new array()

数组的读写:push() 尾部加入新元素

      unshift() 头部加入新元素

      pop() 尾部减去元素

      shift() 头部减去元素

      splice() 中间添加或删除元素

数组的方法:Array.prototype上的方法

arr.join() 数组转字符串

arr.reverse() 数组逆序

arr.sort() 数组排序(默认按字符串)

arr.concat() 数组合并 不操作数组

arr.slice() 返回部分数组 不操作数组

arr.splice() 数组拼接(可对数组中间部分进行添加或删除元素,拼接为新数组) 操作数组

arr.forEach() 数组遍历,对每个数组对象执行指定函数

arr.map() 数组映射,不修改原数组

arr.filter() 数组过滤

arr.every()和arr.some() 数组遍历判断(且和或)是否每一个元素或有一个元素怎么样

arr.reduce()和arr.reduceRight() 数组聚合迭代器从前或从后开始

arr.indexOf()和arr.lastIndexOf() 数组从左从右检索

Array.isArray(arr) 是否为数组

数组 VS 一般对象

都是对象,可以继承对象属性和方法

数组有length属性,数组比对象属性快

数组 VS 字符串

字符串类数组,有str.sharAt(x)按索引查找,也有length属性

六、函数和作用域

函数的概念:定义一次可调用多次的javascript代码段

创建函数:声明 function fuc(){}  声明前置

       表达式 var fuc=function(){}

     构造器 var fuc=new Function('a','b','console.log(a+b)')

全局this和一般函数的this

作为对象方法的函数的this

对象原型链上的this

get/set方法中的this

构造器中的this

call/apply方法中的this

bind方法中的this

函数属性 & arguments 实际参数(类数组对象)

闭包是指一个函数或函数的引用,与一个引用环境绑定在一起,这个引用环境是一个存储该函数每个非局部变量的表。

js没有块级作用域,只有函数作用域,并且具有作用域链机制

利用函数作用域封装函数

教程笔记《JavaScript深入浅出》的更多相关文章

  1. JavaScript深入浅出6-函数和作用域

    慕课网教程视频地址:Javascript深入浅出 函数的概念:定义一次可调用多次的javascript代码段 创建函数:声明 function fuc(){}  声明前置   表达式 var fuc= ...

  2. JavaScript深入浅出5-数组

    慕课网教程视频地址:Javascript深入浅出 数组:值的有序集合 创建数组:字面量,构造器new array() 数组的读写:push() 尾部加入新元素 unshift() 头部加入新元素 po ...

  3. JavaScript深入浅出4-对象

    慕课网教程视频地址:Javascript深入浅出 对象的结构:包含一系列无序的属性,每个属性都有字符串key和对应的值 创建对象:对象字面量.new/原型链.Object.create 对象的属性操作 ...

  4. JavaScript深入浅出3-语句

    慕课网教程视频地址:Javascript深入浅出 程序由语句组成,语句遵守特定语法规则 块 block  {}   没有块级作用域 声明    var 异常   try catch finally 函 ...

  5. JavaScript深入浅出2-表达式和运算符

    慕课网教程视频地址:Javascript深入浅出 表达式是指能计算出值的任何可用程序单元 原始表达式:常量.直接量 3.14,“test” 关键字 null,this 变量 i,k,j 表达式含:原始 ...

  6. JavaScript深入浅出1-数据类型

    慕课网教程视频地址:Javascript深入浅出 javascript是弱数据类型语言,不需要显式的定义类型,一共有如下六种数据类型 原始类型:number string boolean null u ...

  7. jQuery官方基础教程笔记(转载)

    本文转载于阮一峰的博文,内容基础,结构清晰,是jquery入门不可多得的资料,非常好,赞一个. 阮一峰:jQuery官方基础教程笔记 jQuery是目前使用最广泛的javascript函数库. 据统计 ...

  8. RX编程笔记——JavaScript 获取地理位置

    RX编程笔记——JavaScript 获取地理位置 2016-07-05

  9. 函数原型属性-JavaScript深入浅出(三)

    前两次总结了JavaScript中的基本数据类型(值类型<引用类型>,引用类型<复杂值>)以及他们在内存中的存储,对内存空间有了一个简单的了解,以及第二次总结了this深入浅出 ...

  10. 原型那些事 - JavaScript深入浅出(三)

    前两次总结了JavaScript中的基本数据类型(值类型<引用类型>,引用类型<复杂值>)以及他们在内存中的存储,对内存空间有了一个简单的了解,以及第二次总结了this深入浅出 ...

随机推荐

  1. Cache中间件和缓存降级

    Cache中间件和缓存降级 1.前言 surging受到不少.net同学的青睐,也提了不少问题,提的最多的是什么时候集成API 网关,在这里回答大家最近已经开始着手研发,应该在1,2个月内会有个初版A ...

  2. HTML——制作一个图片列表

    总结: 1)html有很多默认样式,然而实际应用中并不需要,因此要在制作样式之前清除掉默认样式. 2)注意清除margin-top塌陷 3)使用float:left后要使用clear:both清除其影 ...

  3. mysql issue:

    ####0 https://yq.aliyun.com/ziliao/53466 首先,很荣幸你找到了这篇文章... 如果你忘记了mysql的密码不妨试试以下这个方法. 1.打开my.cnf  代码如 ...

  4. CDH5.7.2离线部署笔记

    1.部署基本信息说明: 1.1.主机信息 操作系统:选择CentOS6.7 x86-64版本 MEM:64GB,CPU: E5-2630 v3 @ 2.40GHz, DISK:2TB*4(数据节点存储 ...

  5. Azkaban2.5安装部署(系统时区设置 + 安装和配置mysql + Azkaban Web Server 安装 + Azkaban Executor Server安装 + Azkaban web server插件安装 + Azkaban Executor Server 插件安装)(博主推荐)(五)

    Azkaban是什么?(一) Azkaban的功能特点(二) Azkaban的架构(三) Hadoop工作流引擎之Azkaban与Oozie对比(四) 不多说,直接上干货! http://www.cn ...

  6. 《四 spring源码》spring的事务注解@Transactional 原理分析

    先了解什么是注解 注解 Jdk1.5新增新技术,注解.很多框架为了简化代码,都会提供有些注解.可以理解为插件,是代码级别的插件,在类的方法上写:@XXX,就是在代码上插入了一个插件. 注解不会也不能影 ...

  7. js监听页面的scroll事件,当移到底部时触发事件

    //页面拉到底时自动加载更多 $(window).scroll(function(event){ var wScrollY = window.scrollY; // 当前滚动条位置 var wInne ...

  8. redis 大批量数据插入导致MISCONF Redis is configured to save RDB snapshots的解决

    PS:之前写过一遍,那个方法没有彻底解决,现找到真正的解决方法 环境:redis 3.2.100 windows版(注意!!!这是关键),win10,redis客户端spring boot 2.0.7 ...

  9. ios 开发最新屏幕适配

  10. MATLAB中容易忽略却经常遇到的小技巧总结

    1       如何产生一个列向量相同的矩阵 例如,列向量x=[1;2;3],要产生矩阵A=[x,x,x],即[1,1,1;2,2,2;3,3,3]. A = repmat(x,1,n) 2      ...