javascript学习第二课
主要内容:
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学习第二课的更多相关文章
- Elasticsearch7.X 入门学习第二课笔记----基本api操作和CRUD
原文:Elasticsearch7.X 入门学习第二课笔记----基本api操作和CRUD 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链 ...
- javascript学习第一课
1.基本知识: 1.1 词法结构 1.1.1 字符集 javascript程序是用Unicode字符集编写的. 1.1.2 区分大小写 javascript是区分大小写的语言.也即是关键字.变量.函数 ...
- Git速成学习第二课:管理修改与删除文件
Git速成学习笔记整理于廖雪峰老师的官网网站:https://www.liaoxuefeng.com/ 管理修改 首先我们需要明确,为什么说Git管理的是修改而不是文件呢? 我们首先对于已有的read ...
- JS学习第二课
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Linux课程学习 第二课
工欲善其事,必先利其器 虚拟机安装(链接中有详细的操作方法,这里就不再详细说明了,但有注意事项,会在下文中截图标注) https://www.linuxprobe.com/ 注:为了避免是权限问题导 ...
- Shell脚本学习第二课·
Shell文件包含 shell也可以包含外部脚本,语法格式如下: . filename 或 source filename 例如创建两个shell脚本. 脚本1:test1.sh url = &quo ...
- Vue语法学习第二课——指令
指令,是指在Vue中,带有-v前缀的特殊特性 指令特性的值预期是单个JavaScript表达式(v-for例外) <p v-if="seen">看得到</p> ...
- Struts2学习第二课 Struts2概述
Struts2是一个用来开发MVC应用程序的框架,它提供了Web应用程序开发过程中的一些常见问题飞解决方案: -对来自用户的输入数据进行合法性验证 -统一的布局 -可扩展性 -国际化和本地化 -支持A ...
- HTML 5 学习第二课
元素:<p>+++++++++</P> 全部内容 标签:<P></P> 属性:标签内部的内容 eg:<img src=" "& ...
随机推荐
- python---hashlib
简介 用于加密相关的操作,代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法. 在python3中已经废弃了md5和sha模块,简单说明 ...
- Atcoder CODE FESTIVAL 2016 qual C 的E题 Encyclopedia of Permutations
题意: 对于一个长度为n的排列P,如果P在所有长度为n的排列中,按照字典序排列后,在第s位,则P的value为s 现在给出一个长度为n的排列P,P有一些位置确定了,另外一些位置为0,表示不确定. 现在 ...
- [家里蹲大学数学杂志]第047期18 世纪法国数学界的3L
1 Lagrange---78岁 约瑟夫·拉格朗日, 全名约瑟夫·路易斯·拉格朗日 (Joseph-Louis Lagrange 1735~1813) 法国数学家.物理学家. 1736年1月25日生于 ...
- 解决:jquery ajax非首次请求Server端获取cookie值中文乱码问题
HttpCookie cookie = new HttpCookie("RealName", HttpUtility.UrlEncode("你想要设置的值")) ...
- Archlinux KDE 添加中文语言包
From: https://wiki.archlinux.org/index.php/KDE_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29#.E8.AF.AD. ...
- python 版本问题大全
坑一 一下午的时间又让这个不是问题的问题给白白给浪费了,此片文章仅仅纪念一下浪费掉的宝贵时间 新式类与经典类问题 class qwe: def __init__(self, name): self.n ...
- MySQL绿色版5.7以上安装教程
写在前面:5.7增加了安全性,默认root密码不在为空,而是初始化时随机生成一个root密码,改root密码的方式也不一样了 下载地址 http://dev.mysql.com/downloads/m ...
- listed
http://sebastianruder.com/optimizing-gradient-descent/ http://www.nag.co.uk/pss/nag-and-algorithmic- ...
- python中的装饰器
一.什么是装饰器 装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等.装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能 ...
- 纸上谈兵:哈希表(hash table)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! HASH 哈希表(hash table)是从一个集合A到另一个集合B的映射(map ...