博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript基础之一
阅读量:4983 次
发布时间:2019-06-12

本文共 1934 字,大约阅读时间需要 6 分钟。

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

转载于:https://www.cnblogs.com/mszhangxuefei/archive/2012/11/02/js-01.html

你可能感兴趣的文章
特意给我的轩写的小知识
查看>>
LibreOJ #2003. 「SDOI2017」新生舞会
查看>>
sublime text there are no packages available for installation 解决办法
查看>>
Piston Pump Manufacturers - Mobile Cartridge Piston Pump: Advantages
查看>>
我喜欢的几款不错的vim插件
查看>>
eclipse在ubuntu13.04下崩溃crash
查看>>
wpf 右键ListBox可编辑
查看>>
hihocoder offer收割编程练习赛11 C 岛屿3
查看>>
maven+springmvc项目启动时,request mapping not found……
查看>>
提高JetBrains软件的性能
查看>>
ASP.NET:MVC中文件上传与地址变化处理
查看>>
Python 单向链表、双向链表
查看>>
Arrays, Hashtables and Dictionaries
查看>>
JAVA1种C++3种继承方式
查看>>
C#中DataTable排序
查看>>
架构学习提炼笔记(二):架构设计的流程是什么?
查看>>
hive常见问题解决干货大全
查看>>
seq命令
查看>>
centos7常见的操作01 UTC CST
查看>>
Java必会的基础知识(2)
查看>>