基础概念

JavaScript(以下简称Js)中数据类型:Number 字符串 布尔值 数组 对象(Js的对象是一组由键值对组成的无序集合)

Js中基础概念:变量(概念和Java中变量概念类似 指示某个可变的量),Js为动态语言,变量本身类型不固定

Js中操作符:数学运算符 逻辑运算符 赋值运算符 比较运算符 三元运算符

Js中流程控制:判断 循环

函数

计算机程序中的函数是一种代码抽象的方式

Js中,用function关键字定义函数

  1. function abs(x) {
  2. if (x >= 0) {
  3. return x;
  4. } else {
  5. return -x;
  6. }
  7. }

函数体内部语句在执行时,执行到return时,函数就执行完毕,并将结果返回。如果没有return语句,函数执行完毕后也会返回结果,只是结果为undefined

Js中函数也是一个对象,因此第二种定义函数的方式如下:

  1. var abs = function (x) {
  2. if (x >= 0) {
  3. return x;
  4. } else {
  5. return -x;
  6. }
  7. };

在这种方式下,function(x) { ... }是一个匿名函数,没有函数名,这个匿名函数赋值给了变量abs,通过变量abs就可以调用该函数

在一个对象中绑定函数,称为这个对象的方法

函数本身也是一个对象,这个对象是Function对象,这个对象有的方法是apply( ) call( ),要指定函数的this指向哪个对象,可以用函数本身的apply方法,它接收两个参数,第一个参数就是需要绑定的this变量,第二个参数是Array,表示函数本身的参数。apply(  )把参数打包成Array再传入,call(  )把参数按顺序传入

高阶函数(Higher-order function):Js的函数其实都指向某个变量。既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。例子如下

  1. function add(x, y, f) {
  2. return f(x) + f(y);
  3. }

闭包(Closure):看下面的例子,高阶函数除了可以接受函数作为参数外,还可以把函数作为结果返回。在函数lazy_sum中又定义了函数sum,并且,内部函数sum可以引用外部函数lazy_sum的参数和局部变量,当lazy_sum返回函数sum时,相关参数和变量都保存在返回的函数中,这种程序结构称为闭包。

  1. function lazy_sum(arr) {
  2. var sum = function () {
  3. return arr.reduce(function (x, y) {
  4. return x + y;
  5. });
  6. }
  7. return sum;
  8. }

当我们调用lazy_sum( )时,返回的并不是求和结果,而是求和函数。例如 var f = lazy_sum([1, 2, 3, 4, 5]); 调用函数 f 时,才真正计算求和结果 f( );

对象

在Js世界中,一切皆对象

  1. typeof 123; // 'number'
  2. typeof NaN; // 'number'
  3. typeof 'str'; // 'string'
  4. typeof true; // 'boolean'
  5. typeof undefined; // 'undefined'
  6. typeof Math.abs; // 'function'
  7. typeof null; // 'object'
  8. typeof []; // 'object'
  9. typeof {}; // 'object'

Js虽然也是面向对象,但是像类和实例之类的概念在Js中有很大出入。Js中不区分类和实例的概念。Js中时通过原型(prototype)来实现面向对象编程的。Js的原型链和Java的Class区别在,Js中所有对象都是实例,所谓继承关系不过是把一个对象的原型指向另一个对象

函数也是一个对象,它的原型链 foo - Function.prototype - Object.prototype - null

ES6中引入关键字class,让类的定义更加简单(少了很多坑)

浏览器对象

Js可以获取浏览器提供的很多对象,并进行操作。例如 window navigator screen location document

其中document对象表示当前页面。由于Html在浏览器中以DOM形式表示为树形结构,document对象就是整个DOM树的根节点

(非原创 侵删 内容来源https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000)

JavaScript学习笔记:基础知识点总结的更多相关文章

  1. JavaScript学习笔记-基础语法、类型、变量

    基础语法.类型.变量   非数字值的判断方法:(因为Infinity和NaN他们不等于任何值,包括自身) 1.用x != x ,当x为NaN时才返回true; 2.用isNaN(x) ,当x为NaN或 ...

  2. JavaScript学习笔记及知识点整理_1

    一.js的基础部分 1.==和===的区别:==在判断是否相等的时候会进行类型转换,有时会得到非常奇怪的结果,因此一般情况下都是用===判断是否相等2.strict模式:在js中,如果一个变量没有用v ...

  3. JavaScript 学习笔记(基础学习)

    一:来自W3School工具的学习 1:document.getElementById(id) : 访问某个标签的元素,然后对它进行操作 .innerHTML 对其内容进行修改 2:document. ...

  4. JavaScript学习笔记——对象知识点

    javascript对象的遍历.内存分布和封装特性 一.javascript对象遍历 1.javascript属性访问 对象.属性 对象[属性] //字符串格式 //javascript属性的访问方法 ...

  5. JavaScript学习笔记及知识点整理_3

    1.js的事件冒泡及阻止方法:事件冒泡的概念:在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事 ...

  6. JavaScript学习笔记及知识点整理_2

    1.一般而言,在Javascript中,this指向函数执行时的当前对象.举例如下: var someone = { name: "Bob", showName: function ...

  7. 【mpu6050】学习笔记——基础知识点记录

    如图: 假设为三维空间有一个向量R 满足关系:  即为加速度计的x轴,y轴,z轴. 对于MPU6050 其求出的数值为:    分母为灵敏度, ADCRx为读出值. 我关心的是Axr,Ayr,Azr即 ...

  8. jQuery学习笔记 - 基础知识扫盲入门篇

    jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...

  9. 阅读《LEARNING HARD C#学习笔记》知识点总结与摘要系列文章索引

    从发表第一篇文章到最后一篇文章,时间间隔有整整一个月,虽只有5篇文章,但每一篇文章都是我吸收<LEARNING HARD C#学习笔记>这本书的内容要点及网上各位大牛们的经验,没有半点废话 ...

  10. 阅读《LEARNING HARD C#学习笔记》知识点总结与摘要三

    最近工作较忙,手上有几个项目等着我独立开发设计,所以平时工作日的时候没有太多时间,下班累了就不想动,也就周末有点时间,今天我花了一个下午的时间来继续总结与整理书中要点,在整理的过程中,发现了书中的一些 ...

随机推荐

  1. DNS隧道 iodns

    通过iodns这个工具也能搭建DNS隧道 iodns的优点: 对下行数据不进行编码,速度快 支持多平台 最大16个并发连接 强制密码设定 iodns创建的DNS隧道网段不能喝服务器,客户端同一网段,比 ...

  2. JMeter学习(七)聚合报告之 90% Line 正确理解(转载)

    转载自 http://www.cnblogs.com/yangxia-test 90% Line 参数正确的含义: 虽然,我的上面理解有一定的道理,显然它是错误的.那看看JMeter 官网是怎么说的? ...

  3. Oracle中Null与空字符串' '的区别

    含义解释: 问:什么是NULL? 答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零. ORACLE允许任何一种数据类型的字段为空,除 ...

  4. LightOJ - 1030 期望+dp

    题目链接:https://vjudge.net/problem/25907/origin 一个山洞,里面有有1到n个位置,每个位置都有一定的金币,你有一个六面的骰子,一开始你在1,每次摇到了哪个数就往 ...

  5. TOJ 4829: 计算器的改良

    Python写法! 传送门:http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=4829 描述 N ...

  6. Jmeter cookie不兼容问题

    历史脚本,今天准备执行测试,报出这种错误 解决方案:HTTP Cookie Manager里的 Cookie Policy 由rfc2109设置为兼容模式(Compatibility) 参考:http ...

  7. [剑指Offer]46-把数字翻译成字符串(递归思想,循环实现)

    题意 '0'到'25'翻译成'a'到'z',故一个字符串可以有多种翻译方式,如12258有五种翻译方式. 给定字符串,输出有多少种翻译方式 解题思路 递归思想 计f(i)为以第i个字符开始到原字符串结 ...

  8. Cisco VSS

    1.原理 VSS是将两台及以上的物理设备虚拟成逻辑上的一台,可类比堆叠.VSS在控制层面上两个交换机有主从之分,但在数据面上处理是双活的.无论是从网络控制层面和管理视图上在网络上都是一个单独的设备实体 ...

  9. Java 微服务框架选型 Dubbo 和 Spring Cloud

    微服务(Microservices)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成.系统中的各个微服务可被独立部署,各个微服务之间是松耦合的.每个微服务仅关注于完成一件任务并很好地完成该任 ...

  10. php的ob缓存详解

    前言引入 先看下面的代码: 这个代码,每次输出后都有sleep(1),表示程序执行暂定一秒,想象中浏览器应该是每隔1s钟,逐渐显示1到5的,然后事实情况确不是,浏览器访问的时候,等了5s种后,页面上一 ...