JavaScript新手学习笔记4——我记不住的几个坑:短路逻辑、按值传递、声明提前
1.短路逻辑
逻辑运算中,如果前一个条件已经可以得出最终结论,则后续所有条件不再执行!这里的逻辑运算指的是逻辑与和逻辑或。
我们要理解逻辑与是两个条件都为真的时候,才为真,如果第一个就是假的,那么后面一个也不用执行了。逻辑非是两个条件中有一个是真,则结果为真,所以只要第一个为真,那么结果为真,后面一条语句就不用执行了。于是又如下例题:
console.log(2&&3); //
console.log(2||3); //
console.log(0&&1); //
console.log(0||1); //
2.按值传递
两变量间赋值或向函数中传递参数时,都是将原变量的值复制一个副本给对方,修改其中一个,另一个不会改变。(这里想比喻成伏地魔的七个魂器,但不知道每毁掉一个魂器,伏地魔会受到影响吗?哈利波特脑残粉。。)。
var a = 10;
var b = a;
a++;
console.log(b); //
但是引用类型的值传递,传递的仅仅是引用地址,所以修改其中一个的值,另外一个也会跟着变。就好像一间屋子配置了两把钥匙,其中一个打开门,把钱全部拿走,另外一把钥匙打开门后,钱已经没有了。
var a=[1,2,3,4];
var b=a;
a.pop();
console.log(b); //1,2,3
3.函数声明提前
在正式执行程序前,都会预先把所有的var声明的变量和function声明的函数,集中到当前作用域的顶部集中声明。但是赋值留在原地。
function fun(){
return 1;
}
console.log(fun()); //
function fun(){
return 2;
}
console.log(fun()); //
var fun=100;
console.log(fun()); //报错
JavaScript新手学习笔记4——我记不住的几个坑:短路逻辑、按值传递、声明提前的更多相关文章
- JavaScript新手学习笔记1——数组
今天,我复习了一下JavaScript的数组相关的知识,总结一下数组的API: 总共有11个API:按照学习的先后顺序来吧,分别是: ① toString() 语法:arr.toString(); ...
- JavaScript新手学习笔记(一)
1.JavaScript 对大小写敏感. JavaScript 对大小写是敏感的. 当编写 JavaScript 语句时,请留意是否关闭大小写切换键. 函数 getElementById 与 getE ...
- JavaScript新手学习笔记3——三种排序方式(冒泡排序、插入排序、快速排序)
每种编程语言学到数组的时候,都会讲到排序算法,当时学C语言的时候,卡在排序算法.今天来总结一下javascript中如何实现三种排序算法. 1.冒泡排序(默认升序排列哦) 原理: 冒泡排序的原理,顾名 ...
- JavaScript正则表达式学习笔记(二) - 打怪升级
本文接上篇,基础部分相对薄弱的同学请移步<JavaScript正则表达式学习笔记(一) - 理论基础>.上文介绍了8种JavaScript正则表达式的属性,本文还会追加介绍几种JavaSc ...
- javascript正则表达式 - 学习笔记
JavaScript 正则表达式 学习笔记 标签(空格分隔): 基础 JavaScript 正则表达式是用于匹配字符串中字符组合的模式.在javascript中,正则表达式也是对象.这些模式被用于Re ...
- JavaScript简易学习笔记
学习地址:http://www.w3school.com.cn/js/index.asp 文字版: https://github.com/songzhenhua/github/blob/master/ ...
- javaScript 对象学习笔记
javaScript 对象学习笔记 关于对象,这对我们软件工程到学生来说是不陌生的. 因为这个内容是在过年学到,事儿多,断断续续,总感觉有一丝不顺畅,但总结还是要写一下的 JavaScript 对象 ...
- 【MarkMark学习笔记学习笔记】javascript/js 学习笔记
1.0, 概述.JavaScript是ECMAScript的实现之一 2.0,在HTML中使用JavaScript. 2.1 3.0,基本概念 3.1,ECMAScript中的一切(变量,函数名,操作 ...
- Javascript MVC 学习笔记(一) 模型和数据
写在前面 近期在看<MVC的Javascript富应用开发>一书.本来是抱着一口气读完的想法去看的.结果才看了一点就傻眼了:太多不懂的地方了. 仅仅好看一点查一点,一点一点往下看吧,进度虽 ...
随机推荐
- 关于lower_bound()的用法--NYOJ 201作业题
lower_bound它有三个参数, 第一个和第二个是给定区间起点和终点的指针,第三个参数是要查找的数,它的作用原理是在给定的区间中进行二分查找,这个二分区间是前开后闭的,他返回第一个大于等于它的函数 ...
- HTML中<b>标签和<strong>便签的区别
最近碰到的问题,自己写的时候因为<b>标签比较简短偶尔使用,看到别人有使用<strong>标签的,本人不懂区别,在网上找的别人的东西,觉得很有道理,跟大家分享看看~~ 链接:h ...
- chrome Provisional headers are shown错误提示
1.一般出现这个错误是请求没有发送成功 可能原因:在上传文件或ajax上传时指定的timeout,过时时间小 其他资料: http://www.duanzhihe.com/575.html http: ...
- Repeater的ItemDataBound 事件中e.Item.DataItem 的数据类型
1.使用DataSet和DataTable绑定数据源时 DataRowView view = (DataRowView)e.Item.DataItem; 2.DataReader绑定数据源时 Syst ...
- MySQL MyISAM/InnoDB高并发优化经验
最近做的一个应用,功能要求非常简单,就是 key/value 形式的存储,简单的 INSERT/SELECT,没有任何复杂查询,唯一的问题是量非常大,如果目前投入使用,初期的单表 insert 频率约 ...
- share js 分享代码
(function(){ var $doc = $(document); var shareHandlers = { 'twitter': function(prop,shareUrl){ var D ...
- Hbase常用操作
下面我们看看HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如 名称 命令表达式 创建表 create '表名称', '列名称1','列名称2','列名称N' ...
- Tomcat:Can't load IA 32-bit .dll on a AMD 64-bit platform问题的解决
控制台错误如下: java.lang.UnsatisfiedLinkError: D:\apache-tomcat-7.0.56\bin\tcnative-1.dll: Can't load IA 3 ...
- access 2007 vba (亖)
OpenReport方法执行 OpenReport 操作在 Visual Basic 中. 语法 表达式 .OpenReport(ReportName, View, FilterName, Whe ...
- C/C++中的++a和a++
代码: #include <iostream> #include <cstdio> using namespace std; int main(){ ; (++a)+=a; / ...