javascript的那些事儿你都懂了吗
javascript从开始的验证表单的脚本语言发展到现在能运行在服务器上,其影响力不断的提升。自己作为一个做前端的,编写js是必不可少,从自己学习js的历程来看其实也是比较吃力。要 学好它,还是的花费一些精力。下面来说说我学习到的一些js特性吧。
1.对象的属性名使用引号的疑惑
当我们在申明一个对象字面量的时候,经常看到对象的属性名有的有引号,有的没有,那时候我就是觉得非常困惑,它们之间有什么区别呢?这个我困惑很久了。后来,在一本书上不经意的 看到了关于对象的属性名有无引号的解释。
1.1 当对象的属性名是合法的标识符且不是保留字时,是不需要使用引号的,当然使用也没有问题,只不过是多此一举而已。
var object = {
first_name: 'javascript',
city: 'shenzhen'
}
1.2 当你的对象属性名包含不合法的标识符或是保留字的话,就必须使用引号。
var object = {
'first-name': 'javascript',
//first-name: 'javascript', 不合法包含-
city: 'shenzhen'
}
2.对象的检索
大家都是知道,要检索对象里的包含值,有两种方式,一采用xxx['xxx'],二采用.表示法。我不知道大家看到这两个检索方法,你有何看法,你知道其中的差异没有。
2.1 如果字符串表达式是一个字符串字面量,而且它是一个合法的javascript标识符且不是保留字,建议使用"."表示法代替,因为它更加紧凑且可读性更好。
var object = {
first_name: 'javascript',
city: 'shenzhen'
}
console.log(object.first_name); // '.'表示法
2.2 当然xxx['xxx']也是有其优势的,例如检索的对象的属性名不是合法的或是保留字,它就是派上用场。
var object = {
'first-name': 'javascript',
//first-name: 'javascript', 不合法包含-
city: 'shenzhen'
} onsole.log(object['first-name']) // javascript console.log(object.first-name) // NaN
2.3xxx['xxx']还有一个更重要的作用是,当它要检索的属性名是动态变化的(变量)时,必须使用xxx['xxx']这种方式。
for(var att in object){
console.log(object[att]);
}
3.+号在javascript的使用
"+"在其他语言中只是用作加法运算,但在js中它有两个功能加法元算及字符串连接符。
其一,做字符串连接符使用时,拼接字符串作用。
var str = 'hello';
var result = str + ' world';
console.log(result); // hello world
其二,做加法运算
var val1 = 5, val2 = 6 , sum = 0;
sum = val1 + val2;
console.log(sum) //
+还有就是可以起到转换数据的作用,不知道这样讲是否合理,但是大家看到下面的例子就大概明白
var str = '123'; console.log(+str)
console.log(typeof +str); // number var date = new Date();
console.log(+date); // 转换成日期毫秒数
在日期对象前面加个+就能转换成日期毫秒数,而不需要使用其getTime方法,大家是不是觉得很奇妙。
4.==,!= 和===,!==的差异
==,!=在使用的时候会进行强制类型转换,其实这是很糟糕的做法,可能会掩盖因类型引发的错误,还会影响性能。
当使用==时,会进行强制类型转换
var arg = '';
if(arg == 0){
alert('类型转换成功!'); // 执行这句
}else{
alert('类型转换失败!');
}
当使用===时,直接比较直,不会进行强制类型转换
var arg = '';
if(arg === 0){
alert('类型转换失败,只能同类型比较!'); // 执行这句
}
5.parseInt()
说到这个大家都用的很熟啦,他有两个参数,第一个是要传入转换的字符串,第二个是要解析的数字的基数。第二基数是很关键的,在我之前使用的经常不写第二参数,因为默认是10进制的。但是有的浏览器是会根据字符串也判断要转换的进制数据
var str = '09' ;
console.log(parseInt(str)); // 有的浏览器是0
为了避免这种兼容问题最好是带上第二个参数,就不会有这个兼容问题。
var str = '09' ;
console.log(parseInt(str, 10)); //
以上讲的知识都是很基础但是很实用的技术基础,当我们有了牢固的基础,那后面的复杂程序就是在这些基础上累加的。我也是走在js路上的人,很多知识点都还在学习积累中。希望我这文章对基础还不是很好的同学有所帮助。我写这个也是抛砖引玉,希望更多的高手能够留言指引更多js中的奇思妙用,欢迎留言交流。
javascript的那些事儿你都懂了吗的更多相关文章
- javascript的语法作用域你真的懂了吗
原文:javascript的语法作用域你真的懂了吗 有段时间没有更新了,思绪一下子有点转不过来.正应了一句古话“一天不读书,无人看得出:一周不读书,开始会爆粗:一月不读书,智商输给猪.”.再加上周五晚 ...
- javascript中所有函数参数都是按值传递
在看<JavaScript高级程序设计>(第三版)的时候,传递参数这一节,里面提到 ECMAScript中所有函数的参数都是按值传递的 它自己的解释是, 把函数外部的值复制给函数内部的参数 ...
- JavaScript 中的所有数据都是以 64 位浮点型数据(float) 来存储。浮点型数据使用注意事项。全局变量特殊之处
JavaScript 中的所有数据都是以 64 位浮点型数据(float) 来存储. 所有的编程语言,包括 JavaScript,对浮点型数据的精确度都很难确定: <!DOCTYPE html& ...
- 人人都懂区块链--pdf电子版学习资料下载
人人都懂区块链 21天从区块链“小白”到资深玩家电子版pdf下载 链接:https://pan.baidu.com/s/1TWxYv4TLa2UtTgU-HqLECQ 提取码:6gy0 好的学习资料需 ...
- javascript中的所有内容都是一个对象:字符串、值、数组、函数…
javascript中的所有内容都是一个对象:字符串.值.数组.函数…此外,javascript允许自定义对象.javascript对象JavaScript提供多个内置对象,如字符串.日期.数组等.对 ...
- [转帖]看完这篇文章,我奶奶都懂了https的原理
看完这篇文章,我奶奶都懂了https的原理 http://www.17coding.info/article/22 非对称算法 以及 CA证书 公钥 核心是 大的质数不一分解 还有 就是 椭圆曲线算法 ...
- JS对象 JavaScript 中的所有事物都是对象,如:字符串、数值、数组、函数等,每个对象带有属性和方法。
什么是对象 JavaScript 中的所有事物都是对象,如:字符串.数值.数组.函数等,每个对象带有属性和方法. 对象的属性:反映该对象某些特定的性质的,如:字符串的长度.图像的长宽等: 对象的方法: ...
- 《Machine Learning in Action》—— 懂的都懂,不懂的也能懂。非线性支持向量机
说在前面:前几天,公众号不是给大家推送了第二篇关于决策树的文章嘛.阅读过的读者应该会发现,在最后排版已经有点乱套了.真的很抱歉,也不知道咋回事,到了后期Markdown格式文件的内容就解析出现问题了, ...
- Java六大问题你都懂了吗?
这些问题对于认真学习java的人都要必知的,当然如果你只是初学者就没必要那么严格了,那如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列. 一.到底要怎么样初始化! 本问题讨论 ...
随机推荐
- HDU5336题解
解题思路 这题思路并不难,主要问题是,不太好编码实现(可能是本人练习不够吧),因为有个时间在里面,而且每个小水滴都同时流动,感觉好复杂的样子.比赛时,我首先想到的是DFS+时间流做参数,由于比赛时神经 ...
- ALSA声卡16_编写ALSA声卡应用程序_学习笔记
1.体验 (1)ALSA声卡使用体验:使用arecord录音,使用aplay播放,在Alsa-utils里面) 准备: cd linux-3.4.2 patch -p1 < ../linux-3 ...
- Android Study 玩转百度ocr身份证识别不是梦~
前言 Today,由于昨晚喝蒙了,今天晕乎乎的为大家带来如何快速集入ocr身份证识别. 关于ocr的前世今生这里不做过多的说明,百度一抓一大把. 前期准备 百度AI开放平台ocr地址: https:/ ...
- martin/docker-cleanup-volumes
https://hub.docker.com/r/martin/docker-cleanup-volumes/
- 象棋AI算法(二)
原文大神是用html5+js写的关于象棋AI的博客,里面重点讲了棋子的着法,自己设计的评估函数和简单的Minmax理论,没有具体的讲搜索算法,本文是对原文的学习和分析补充 一,棋子的着法com.byl ...
- nginx 代理http配置实例
#user nginx; worker_processes ; #error_log /var/log/nginx/error.log warn; #pid /var/run/nginx.pid; e ...
- DataSnap 连接池 DSServer1Disconnect
DataSnap Server DSServer1Disconnect 这个函数什么时候执行? void __fastcall TServerContainer1::DSServer1Disconne ...
- Bootstrap 与 Jquery validate 结合使用——简单实现
首先必须引入的JS和CSS <script type="text/javascript" src="${ctx}/static/js/jquery-1.9.1.mi ...
- MySQL修改redo_log_size
MySQL5.5 步骤如下: 1. set global innodb_fast_shutdown = 0; 2. mysqladmin shutdown 3. 修改my.cnf innodb_log ...
- Spring 学习记录8 初识XmlWebApplicationContext(2)
主题 接上文Spring 学习记录7 初识XmlWebApplicationContext refresh方法 refresh方法是定义在父类AbstractApplicationContext中的. ...