主要内容:

1.不可变的原始值和可变的对象引用

javascript中的原始值(undefined、null、布尔值、数字和字符串)与对象(包括数组和函数)有着根本的区别。原始值是不可更改的;任何方法都无法更改一个原始值。

通过上图可以看出,原始值的比较是值的比较:只有它们的值相等时它们才相等;对象和原始值不同,首先,它们是可变的--它们的值是可修改的;两个单独的对象永不相等。两个单独的数组也不相等。如果我们想比较两个单独对象或者数组,则必须比较它们的属性或元素。

2.类型转换:

如图:

注意:一个值转换为另一个值并不意味着两个值相等。比如,如果在期望使用布尔值的地方使用了undefined,它将会转换为false,但这并不表时undefined==false.

重复的声明和遗漏的声明:

使用var 语句重复声明变量是合法且无害的。如果重复声明带有初始化器,那么这就和一条简单的赋值语句没有什么两样。

变量作用域

变量的作用域(scope)是程序源代码中定义这个变量的区域。全局变量拥有全局作用域,在javascript代码中的任何地方都是有定义的。然而在函数内声明的变量只在函数体内有定义。它们是局部变量,作用域是局部性的。函数参数也是局部变量,它们只在函数体内有定义。

       在函数体内,局部变量优先级高级同名的全局变量。

函数作用域和声明提前

在类似C语言的编程语言中,花括号内每一段代码都具有各自的作用域,而且变量在声明它们的代码之外是不可见的。我们称之为块级作用域。javascript中没有块级作用域 。取而代之地使用了函数作用域:

javascript的函数作用域是指在函数内声明的所有变量在函数体内始终是可见的。这意味着在声明之前甚至已经可用,javascript的这个特性被非正式地称为声明提前。如图:

作为属性的变量

当声明一个javascript变量时,实际上定义了全局对象的一个属性,当使用var声明一个变量时。创建的这个属性是不可配置的,也就是说这 个变量无法通过delete运算符删除。

引用数据类型数组:

数组是一个引用对象,其长度可变,元素内容也可以不一致,

如:var arr = [1,2,3,true,new Date()];

这个定义数组也是可以的。

当我们调用数组对象时,其实隐式调用了数组对象的tostring()方法;所以此输出方法与console.info(arr.tostring())是一样的;

数组中splice方法应用:

通过图示可以看出,splice操作数组本身;

concat与join示例:

通过示例可以看出,concat方法与join方法都不会影响数组本身,但会生成新的对象;

ECMA5数组新特性:

indexOf(),every、filter、forEach、map、some

every:对数组中每一个元素进行处理比较,如果全部比较结果为真则返回true,否则返回false;

filter:对数组的每个元素用一个函数处理,将过滤后的结果返回:

map:对数组中每一个元素交给函数处理,并生成一个新的数据对象:

some:对数组中每一个元素都进行遍历处理,如果有一个条件为真,则返回true,否则返回false;

reduce:对数组中前一个元素和后一个元素作处理,遍历方式从右向左:

javascript学习第二课的更多相关文章

  1. Elasticsearch7.X 入门学习第二课笔记----基本api操作和CRUD

    原文:Elasticsearch7.X 入门学习第二课笔记----基本api操作和CRUD 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链 ...

  2. javascript学习第一课

    1.基本知识: 1.1 词法结构 1.1.1 字符集 javascript程序是用Unicode字符集编写的. 1.1.2 区分大小写 javascript是区分大小写的语言.也即是关键字.变量.函数 ...

  3. Git速成学习第二课:管理修改与删除文件

    Git速成学习笔记整理于廖雪峰老师的官网网站:https://www.liaoxuefeng.com/ 管理修改 首先我们需要明确,为什么说Git管理的是修改而不是文件呢? 我们首先对于已有的read ...

  4. JS学习第二课

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. Linux课程学习 第二课

    工欲善其事,必先利其器 虚拟机安装(链接中有详细的操作方法,这里就不再详细说明了,但有注意事项,会在下文中截图标注) https://www.linuxprobe.com/  注:为了避免是权限问题导 ...

  6. Shell脚本学习第二课·

    Shell文件包含 shell也可以包含外部脚本,语法格式如下: . filename 或 source filename 例如创建两个shell脚本. 脚本1:test1.sh url = &quo ...

  7. Vue语法学习第二课——指令

    指令,是指在Vue中,带有-v前缀的特殊特性 指令特性的值预期是单个JavaScript表达式(v-for例外) <p v-if="seen">看得到</p> ...

  8. Struts2学习第二课 Struts2概述

    Struts2是一个用来开发MVC应用程序的框架,它提供了Web应用程序开发过程中的一些常见问题飞解决方案: -对来自用户的输入数据进行合法性验证 -统一的布局 -可扩展性 -国际化和本地化 -支持A ...

  9. HTML 5 学习第二课

    元素:<p>+++++++++</P> 全部内容 标签:<P></P> 属性:标签内部的内容 eg:<img src=" "& ...

随机推荐

  1. Hadoop学习11--Ha集群配置启动

    理论知识: http://www.tuicool.com/articles/jameeqm 这篇文章讲的非常详细了: http://www.tuicool.com/articles/jameeqm 以 ...

  2. 关于http协议详解

    Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前 ...

  3. view坐标_ _ Android应用坐标系统全面详解

    转:http://blog.csdn.net/yanbober/article/details/50419117 1 背景 去年有很多人私信告诉我让说说自定义控件,其实通观网络上的很多博客都在讲各种自 ...

  4. 清理Oracle安装目录里的一些日志信息

    最近测试环境服务器上磁盘空间紧张,表空间里面的数据也不知道开发哪些需要哪些不需要,而且因为此测试库运行时间比较久远,起码有三年了.于是就从清理Oracle安装目录下的日志下手. 发现在一般这几个日志, ...

  5. 2.6内核LOGO制作方法

    http://blog.csdn.net/tommy_wxie/article/details/8594286

  6. 方法的重载(overload)和重写(override)的区别

    方法的重写Overriding和重载Overloading是Java多态性的不同表现.重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现.如 ...

  7. Oracle EBS Java Applet报错:找不到类

    Oracle EBS Home Page可以打开,但是无法打开EBS的Form,查看Java控制台,有错误报出. java控制台报错,如下: Java Plug-in 1.6.0_07 使用 JRE ...

  8. PHP基础课程学习总结

    时间过得很快,不知不觉中过去了一个月,PHP基础课程已经学完了.休息这几天中,睡觉起来,整理下笔记,几天的假期又过去了,明天正式开始PHP的专业课程,新的征途又要开始了.开发整站时发现,过去整站做得太 ...

  9. ESL python调用C模块时传递unicode字符串报错问题解决

    在是用freeswitch时利用ESL的python调用时传递字符串报错 TypeError: in method 'ESLconnection_api', argument 2 of type 'c ...

  10. Spark 集群安装

    一.安装jdk 二.安装scala 三.安装Spark 1.解压 tar -zxvf spark-1.5.1-bin-hadoop2.6.tgz 2.cp spark-env.sh.template ...