JavaScript的基础语法,你真的了解吗?
这篇文章是在我们熟悉了JS的基础语法后,很少有人去关注的一些细节部分。如果掌握了某些细节也许会对代码的改善有着非凡的作用。也许会使我们的代码更严谨,更高效。
1.if语句的条件
if条件中,括号里是布尔类型的表达式,但你真的了解什么时候是真值,什么时候是假值吗?
下列值被当做假(false):
false;null;undefined;空字符串'';数字0;数字NaN
其它的值都被当做真,包括true、字符串"false",以及所有的对象。
2.逻辑运算符
我们都知道,关于逻辑运算符&&是并、||是或。很多人还可以指出JAVA中,&和|是不短路的。但你真的了解JS中的&&和||的运算规则吗?
&&:如果第一个表达式的值为假,那么运算符&&产生它的第一个表达式的值,否则产生第二个表达式的值。
||:如果第一个表达式的值为真,那么运算符||产生第一个表达式的值,否则产生第二个表达式的值。
那么,大家可以猜到下面的代码的输出了吧。
var str = "abc";
alert(true && str); // abc
这可以引申为:当我们尝试从undefined中获得属性时将导致TypeError异常,页面会提示“属性不存在”。但我们使用如下代码就可以避免。
var obj = {
name:"someone",
propoty:{
higth:100,
width:200
}
}
alert(obj.propoty.higth); //
alert(obj.other); // undefined
alert(obj.other.higth); // TypeError
alert(obj.other && obj.other.higth); // undefined
要知道,出现TypeError浏览器是要报错的,而返回undefined是一个值,不会影响程序流程,这对客户来说是非常重要的。
3.typeof运算符
typeof运算符产生的值有'number'、'string'、'boolean'、'undefined'、'function'和'object'。但这里有一个陷阱:如果是一个数组或null,那么结果是'object'。如
alert(typeof null); // object
4.==与===
在我遇到的几乎所有的JS代码中,使用的都是==(恕我见识短浅)。很遗憾,这是有缺陷的。
===和!==会按照你期望的方式工作,如果两边表达式的结果类型一致且拥有相同的值,那么===返回true,!==返回false。但对于==和!=只有在类型一致的时候才会做出正确的判断。如果两边的表达式的结果类型不一直,它们会去做强制类型转换。转换的规则非常复杂,具体可以去搜索相关详述。如下一些例子:
alert('' == '0'); // false
alert(0 == ''); // true
alert(0 == '0'); // true
alert(false == 'false'); // false
alert(false == '0'); // true
alert(false == undefined); // false
alert(false == null); // false
alert(null == undefined); // true
alert(' \t\r\n ' == 0); // true
以上如果使用===,结果都是false。
注:以上部分例子参考《JavaScript语言精粹》一书。
JavaScript的基础语法,你真的了解吗?的更多相关文章
- JavaScript编程:javaScript核心基础语法
1.javaScript核心基础语法: javaScript技术体系包含了5个内容: 1.核心语言定义: 2.原生对象和雷子对象: 3.浏览器对象 ...
- JavaScript 正则表达式基础语法
前言 正则表达式在人们的印象中可能是一堆无法理解的字符,但就是这些符号却实现了字符串的高效操作.通常的情况是,问题本身并不复杂,但没有正则表达式就成了大问题.javascript中的正则表达式作为相当 ...
- JavaScript的基础语法
对于Javascript的而言没有数据类型的全部都是通过var来定义创建的.比如: <!DOCTYPE html> <html> <head> <meta c ...
- JavaScript数据类型 —— 基础语法(2)
JavaScript基础语法(2) 数据类型 js中有六种数据类型,包括五种基本数据类型(Number,String,Boolean,Undefined,Null),和一种复杂数据类型(Object) ...
- JavaScript的基础语法及DOM元素和事件
一,JavaScript是什么? 1,JavaScript简称:js,是一种浏览器解释型语言,嵌套在HTML文件中交给浏览器解释执行.主要用来实现网页的动态效果,用户交互及前后端的数据传输等. 2,J ...
- JavaScript之基础语法
第一章 javascript语法 一, js代码的引入 方式一:在html页写js代码 <script> alert('hello,world') </script> 方式二: ...
- 1.JavaScript 教程:基础语法
简介: JavaScript web 开发人员必须学习的 3 门语言中的一门: HTML 定义了网页的内容 CSS 描述了网页的布局 JavaScript 网页的行为 用法: (1)HTML 中的脚本 ...
- JavaScript核心基础语法
1 什么是JavaScript? 是一种嵌入在网页中的程序段. 是一种解释型语言,被浏览器解释执行. 由Netscape发明,ECMA(欧洲计算机制造商协会)将其标准化. JavaScript借用了J ...
- JavaScript面向对象基础语法总结
1.Javascript的 对象(Object): //例子:var car = { , , }; 2.使用构造函数来创建对象. //例子: var Car = function() { ; ; ; ...
随机推荐
- MNC - Multicast NetCat
MNC - Multicast NetCat 使用nc测试udp多播,总是遇到奇怪的问题,搞的一头雾水.偶然发现了MNC,测试了一下果然好用. 下载地址: https://github.com/mar ...
- EntityFramework.Extended扩展用法
EntityFramework.Extended是一个基于EntityFramework框架 IQueryable类型的扩展方法,包括Update.Delete. 它的优点就是 修改删除操作不仅仅有I ...
- C++ this指针详解
C++this指针操作 在这里总结一下this 指针的相关知识点. 首先,我们都知道类的成员函数可以访问类的数据(限定符只是限定于类外的一些操作,类内的一切对于成员函数来说都是透明的),那么成员 ...
- java笔试题(1)
char型变量中能不能存贮一个中文汉字? char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦.不过,如果某个特殊的汉字没 ...
- CSS中盒子模型和position(一)
今天遇到几个css中的重要的知识点,记得这些都是以前看过的:margin.padding.border和position.可是用起来还是有很多的问题,以前自己看过去总是懒得记录,等到用起来了都不知道自 ...
- merry Christmas
圣诞节的来历 圣诞节这个名称是基督弥撒的缩写. 弥撒是教会的一种礼拜仪式. 1.耶诞节是一个宗节,我们把它当作耶苏的诞辰来庆祝,因而又名耶诞节.这一天,世界所有的基督教会都举行特别的礼拜仪式.但是有很 ...
- winform - BackgroundWorker
http://www.cnblogs.com/happy555/archive/2007/11/07/952315.html 在VS2005中添加了BackgroundWorker组件,该组件在多线程 ...
- 【Lua】Lua中__index与元表(转)
转载于:http://blog.csdn.net/xocoder/article/details/9028347 Lua的表本质其实是个类似HashMap的东西,其元素是很多的Key-Value对,如 ...
- JS--事件对象中部份浏览器不兼容方法
测试时主要用的浏览器是Firefox 28.0.IE11.IE8.Chrome 34.0 一.什么是事件对象:当触发某个事件的时候,会产生一个事件对象,这个对象包含着所有的与事件有关的信息,包括导致 ...
- 【BZOJ】【3850】ZCC Loves Codefires
贪心 就跟NOIP2012国王游戏差不多,考虑交换相邻两题的位置,对其他题是毫无影响的,然后看两题顺序先后哪个更优.sort即可. WA了一次的原因:虽然ans开的是long long,但是在这一句: ...