javascript基础之一

简介:

上周收到汤姆大叔的赠书JavaScript编程精解(顺风快递哦,大叔果然给力),迫不及待浏览了下,首先看到是各种对该书原著的赞誉,非常期待接下来的阅读体验。读完第一章,已经非常吸引我持续读下去。因为书里的内容很对我的胃口——简明扼要,把握细节。 这里我把自己觉得很细节,很重要的部分记录下来,以方便今后的学习和查阅,当然也希望给正在学习javascript的朋友一些方便。

这里再次感谢大叔提供了这么好的javascript学习书籍,想学习javascript的同学,不要错过这本书哦 o(∩_∩)o

一,javascript基础

1.undefinednull:当使用var something;定义一个变量,alert(something)得到就是undefined。undefined和null主要是理论上的区别:null表示该值被定义,但是没有任何实际值。undefined==null返回true。

2.自动类型转换

下面几个判断都会返回true:false==0  ""==0  "5"==5  在多数情况下会将一个类型的值转化为另一个类型进行判断,但是当遇到null或者undefined的时候,只有两边都是null或undefined时才返回true。0NaN空字符串(""或者空白字符(串)"  ")转化为false,其他所有的值都会转化为true。

如果不想发送任何类型的自动转化,可以使用另外的两个操作符:===!==。分别表示精确相等和精确不等,此时,null===undefined,false===0,""===0,"5"===5都会返回false。

如果数字和字符串相乘,javascript会尝试将字符串转换为数字。如"Apollo"+5——>Apollo5,null+"ify"——>nullify,"5"*5=25,"zxf"*5=NaN.因为字符串不是数字,所以得到的结果也不是数字,NaN==NaN返回的是false,判断是否是数字可以用isNaN函数。

3.&&||

||的作用:如果能将该值转化为bool,并且值为true,就返回左边的值,否则返回右边的值

&&的作用:当左边的值为false时,返回左边的值,否则返回右边的值。

另:只在必要时才执行表达式右边的值,例如true||X,不管X什么,结果都是true,因此X从来就没有被执行过。

4.函数

在C#等其他语言中,大括号是可以产生新的作用域的,但是在javascript中,函数是唯一可以创建新作用域的地方。如:

复制代码
var a=0;
if(true)
{
    var a=1;
}
alert(a);
复制代码

此时,内外a的值都是1.

4.1 函数值

javascript里面的所有东西都是值,包括function函数,可以像定义一个普通变量一样定义函数。如:

var a=null;
function b(){alert("B");}
(a||b)();

(a||b)()这里将"调用时不传参数"的操作符"()"应用到了(a||b)上,如果该表达式产生的不是函数,则会报错。用匿名的函数也可以:(a||function(){alert("B");})();

4.2 闭包

如果创建局部变量的函数调用不在栈上了,那局部变量会发生什么变化,如下:

复制代码
function createFunction(){
  var local=100;
  return function(){return local;};
}
var a=createFunction();
alert(a());//输出100
复制代码

调用createFunction()返回一个函数,这里赋给了a(体现了函数值的能力),a再加上"调用时不传参数"的操作符"()"执行返回的函数function(){return local;},local的值被保存了下来,javascript的这种特性成为闭包——包裹一些局部变量的一个函数叫做一个闭包。再如:

复制代码
function makeAdder(amount){
     return function(number){
         return number+amount; 
     };
}
var addTwo=makeAdder(2);
alert(addTwo(3));//输出5 这里因为闭包保存了amount这个变量的值
复制代码

ps:感谢大叔这么简短有力的文字,让我对闭包有了更多的了解,之前看过一些关于闭包描述,都不是很清楚。现在好多了o(∩_∩)o

本文转自Rt-张雪飞博客园博客,原文链接http://www.cnblogs.com/mszhangxuefei/archive/2012/11/02/js-01.html如需转载请自行联系原作者


张雪飞

相关文章
|
JavaScript
JS基础之解构赋值
解构赋值 在js中,我们经常会将对象或者数组里面的一部分数据作为参数传递给函数,如果我们使用传统的.方法会很麻烦。
|
移动开发 JavaScript 前端开发
JavaScript基础知识梳理-上
对JavaScript基础知识梳理-上
286 31
JavaScript基础知识梳理-上
|
存储 JavaScript 前端开发
JavaScript基础(一篇入门)
JavaScript基础(一篇入门)
338 0
JavaScript基础(一篇入门)
|
JavaScript 前端开发
2021琴理工作室JS基础教学(三)
当网页被加载的时候,浏览器就会创建文档对象模型,也就是dom 而dom可以看做一颗树
155 3
2021琴理工作室JS基础教学(三)
|
JavaScript 前端开发
JavaScript 入门基础 - 运算符(三)
文章目录 JavaScript 入门基础 - 运算符(三) 1.什么是运算符 2.表达式和返回值 3.算术运算符概述 4. 赋值运算符 5.递增和递减运算符 5.1 递增和递减运算符概述 5.2 递增运算符 5.2.1 前置递增运算符 5.2.2 后置递增运算符 5.2.3 后置和前置运算符的区别 6. 比较运算符 7. 逻辑运算符 7.1 逻辑运算符概述 7.2 逻辑与 7.3 逻辑或 7.4
236 0
JavaScript 入门基础 - 运算符(三)
|
存储 JSON JavaScript
JavaScript 入门基础 - 变量 / 数据类型(二)
JavaScript 入门基础 - 变量 / 数据类型(二)
216 0
JavaScript 入门基础 - 变量 / 数据类型(二)
|
JavaScript 前端开发 物联网
JavaScript 入门基础 / 概念介绍(一)
JavaScript 入门基础 / 概念介绍(一)
252 0
JavaScript 入门基础 / 概念介绍(一)
|
JavaScript 前端开发 Java
JavaScript的基础使用
JavaScript的基础 一、javascript简介 JavaScript简称js,最初由网景(现在的Mozilla)公司创建,由于商标冲突原因,其标准版本命名为ECMAScript,但是一般人们还是叫JavaScript,只在谈标准的时候说到ECMAScript这个名字。值得注意的是JavaScript与java没有任何关系,就像雷峰塔(神话中镇压白娘子的塔)和雷锋。此外js(JavaScript)和jsp(java servlet pages)也没有关系。   js的工作分为两部分,一部分属于js语言本身的特性,而另一部需要依靠宿主环境(web浏览器)才能完成。 二、javascri
JavaScript的基础使用
|
JavaScript 前端开发
vue js文字跑马灯基础版本
提供两种解决思路
398 1
|
JavaScript 前端开发
2021琴理工作室JS基础教学(二)
作用域是在运行时代码中的某些特定部分中变量,函数和对象的可访问性。 换句话说,就是空间可见相册和空间不可见相册的作用。
156 4

热门文章

最新文章