教程笔记《JavaScript深入浅出》

一、数据类型

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没有块级作用域,只有函数作用域,并且具有作用域链机制

利用函数作用域封装函数

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏有趣的django

2.python数据类型

字符串(string) 1.字符串常用功能 name = 'derek' print(name.capitalize()) #首字母大写 Derek ...

2755
来自专栏数据小魔方

动态图表8|组合框(offset函数)

今天跟大家分享动态图表8——组合框(offset函数)! 步骤: 使用组合框制作下拉菜单 使用offset函数制作动态数据源 利用动态数据源制作图表 1、组合框...

3396
来自专栏Python小屋

Python使用matplotlib填充图形指定区域

本文代码重点在于演示Python扩展库matplotlib.pyplot中fill_between()函数的用法。 import numpy as np im...

2513
来自专栏天天

微信小程序中自定义组件solt的使用

我们会发现,在自定义模板中有一对<code><slot></slot></code>,这里是干什么用的呢?在组件模板中可以提供一个 <slot> 节点,用于承载...

1452
来自专栏PHP技术

PHP中的函数

函数调用 function sum($x,$y) //形参:在声明函数时声明的参数 { // $x = 1; //如果在函数内对参数赋值,则会覆盖实参。...

2975
来自专栏闻道于事

Java之分支和循环

Java中的分支语句: if语句: if语句的四种写法:   (1)   if(表达式_布尔值) {   ...   }   (2)   if(表达式_布...

2859
来自专栏python百例

06-字符串使用基础

642
来自专栏向治洪

数据结构之数组

一.数组的基本概念 数组可以看成是多个相同类型数据组合,对这些数据的统一管理。 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变...

1755
来自专栏黄Java的地盘

eventEmitter3源码分析与学习

事件监听在前端的开发过程中是一个很常见的情况。DOM上的事件监听方式,让我们看到了通过事件的方式来进行具体的业务逻辑的处理的便捷。

441
来自专栏自动化测试实战

接口测试框架——第二篇

3498

扫码关注云+社区