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的人都要必知的,当然如果你只是初学者就没必要那么严格了,那如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列. 一.到底要怎么样初始化! 本问题讨论 ...
随机推荐
- 【UVA】673 Parentheses Balance(栈处理表达式)
题目 题目 分析 写了个平淡无奇的栈处理表达式,在WA了5发后发现,我没处理空串,,,,(或者说鲁棒性差? 代码 #include <bits/stdc++.h> usin ...
- JavaScript中的跨域详解(一)
同源策略 所谓的同源策略,指的是浏览器对不同源的脚本或者文本访问方式进行的限制. 所谓同源,就是指两个页面具有相同的协议,主机(也常说域名),端口,三个要素缺一不可. 同源政策的目的,是为了保证用户信 ...
- WTL教程
很不错的教程 http://www.yakergong.net/wtl/
- pandas入门学习--------------------------(一)
使用pandas,首先需要熟悉它的2个主要的数据结构:Series和DataFrame. Series series是一种类似于一维数组的的对象,它由一组数据(各种Numpy数据类型)以及一组与之相关 ...
- 你应该使用 Django admin 的 9 个理由(转)
你应该使用 Django admin 的 9 个理由 “问题是,我问到的每个人都持反对意见,他们认为 admin 只限于超级用户,很不灵活并且是难以定制.”—来自 Reddit 的 andybak 我 ...
- struts.xml配置文件(package,namespace,action)
struts2.0 xml配置 struts.xml文件结构 struts.xml文件是整个Struts2框架的核心. struts.xml文件内定义了Struts2的系列Action,定义Actio ...
- ROS 禁止公网暴力破解SSH FTP
最简单的彻底禁止公网访问SSH FTP端口 1 2 /ip firewall filter add chain=input protocol=tcp dst-port=21-22 src-addres ...
- springMVC环境搭建(1)
工作一年以来,写的都是.net,最近比较闲,想把之前学过的java相关的东西捡起来,也学点新的东西.以前做过SSH架构,一直好奇spring mvc是怎么样的,所以今天试试看. 总体的代码结构 手动输 ...
- Perl 变量:数组变量
Perl 数组Perl 数组一个是存储标量值的列表变量,变量可以是不同类型.数组变量以 @ 开头.访问数组元素使用 $ + 变量名称 + [索引值] 格式来读取. 1.创建列表.数组1.数组变量以 @ ...
- Android中自定义ListView实现上拉加载更多和下拉刷新
ListView是Android中一个功能强大而且很常用的控件,在很多App中都有ListView的下拉刷新数据和上拉加载更多这个功能.这里我就简单记录一下实现过程. 实现这个功能的方法不止一个,Gi ...