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的那些事儿你都懂了吗的更多相关文章

  1. javascript的语法作用域你真的懂了吗

    原文:javascript的语法作用域你真的懂了吗 有段时间没有更新了,思绪一下子有点转不过来.正应了一句古话“一天不读书,无人看得出:一周不读书,开始会爆粗:一月不读书,智商输给猪.”.再加上周五晚 ...

  2. javascript中所有函数参数都是按值传递

    在看<JavaScript高级程序设计>(第三版)的时候,传递参数这一节,里面提到 ECMAScript中所有函数的参数都是按值传递的 它自己的解释是, 把函数外部的值复制给函数内部的参数 ...

  3. JavaScript 中的所有数据都是以 64 位浮点型数据(float) 来存储。浮点型数据使用注意事项。全局变量特殊之处

    JavaScript 中的所有数据都是以 64 位浮点型数据(float) 来存储. 所有的编程语言,包括 JavaScript,对浮点型数据的精确度都很难确定: <!DOCTYPE html& ...

  4. 人人都懂区块链--pdf电子版学习资料下载

    人人都懂区块链 21天从区块链“小白”到资深玩家电子版pdf下载 链接:https://pan.baidu.com/s/1TWxYv4TLa2UtTgU-HqLECQ 提取码:6gy0 好的学习资料需 ...

  5. javascript中的所有内容都是一个对象:字符串、值、数组、函数…

    javascript中的所有内容都是一个对象:字符串.值.数组.函数…此外,javascript允许自定义对象.javascript对象JavaScript提供多个内置对象,如字符串.日期.数组等.对 ...

  6. [转帖]看完这篇文章,我奶奶都懂了https的原理

    看完这篇文章,我奶奶都懂了https的原理 http://www.17coding.info/article/22 非对称算法 以及 CA证书 公钥 核心是 大的质数不一分解 还有 就是 椭圆曲线算法 ...

  7. JS对象 JavaScript 中的所有事物都是对象,如:字符串、数值、数组、函数等,每个对象带有属性和方法。

    什么是对象 JavaScript 中的所有事物都是对象,如:字符串.数值.数组.函数等,每个对象带有属性和方法. 对象的属性:反映该对象某些特定的性质的,如:字符串的长度.图像的长宽等: 对象的方法: ...

  8. 《Machine Learning in Action》—— 懂的都懂,不懂的也能懂。非线性支持向量机

    说在前面:前几天,公众号不是给大家推送了第二篇关于决策树的文章嘛.阅读过的读者应该会发现,在最后排版已经有点乱套了.真的很抱歉,也不知道咋回事,到了后期Markdown格式文件的内容就解析出现问题了, ...

  9. Java六大问题你都懂了吗?

    这些问题对于认真学习java的人都要必知的,当然如果你只是初学者就没必要那么严格了,那如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列. 一.到底要怎么样初始化! 本问题讨论 ...

随机推荐

  1. 大白话系列之C#委托与事件讲解大结局

    声明:本系列非原创,因为太精彩才转载,如有侵权请通知删除,原文:http://www.cnblogs.com/wudiwushen/archive/2010/04/20/1698795.html 今天 ...

  2. 第一个 Windows 界面程序

    编译器 使用的编译器为 Visual Studio 2017 菜单栏 -> 文件 -> 新建 -> 项目 选择 Windows 桌面应用程序,然后填好相关信息后点击“确定” 在解决方 ...

  3. SpringData JPA示例

    SpringData JPA只是SpringData中的一个子模块 JPA是一套标准接口,而Hibernate是JPA的实现 SpringData JPA 底层默认实现是使用Hibernate 1.  ...

  4. addClass()使用方法

    含义:为元素添加指定的样式名 具体用法分为以下两种: 1.可以一次添加一个或者多个用空格隔开的样式名 例: <script> $("ul li").addClass(& ...

  5. 【Django】uWSGI和Gunicorn【转】

    因为nginx等优秀的开源项目,有不少本来不是做服务器的同学也可以写很多服务器端的程序了.但是在聊天中会发现,大家虽然写了不少代码,但是对wsgi是什么,gunicorn是什么,反向代理又是什么并不了 ...

  6. iOS学习之UINavigationController详解与使用(二)页面切换和segmentedController

    iOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem是上篇,我们接着讲UINavigationController的重要作用,页面的管理和切换. ...

  7. objective-C中的"非正式协议"和“正式协议”

    objective-C中的接口与泛型 先承认我是标题党,因为在obj-c的世界中,官方根本没有"接口"与"泛型"这样的说法. 不过在obj-c中有二个与之接近的 ...

  8. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 9_Neural Networks learning

    神经网络的学习(Neural Networks: Learning) 9.1 代价函数 Cost Function 参考视频: 9 - 1 - Cost Function (7 min).mkv 假设 ...

  9. [iOS]UIScrollView左右拨动,第二页宽度只有一半问题

    用UIScrollView动态加入新View,而这个View是Xib方式创建,如果设置view的frame,这个view的宽度却只有设置的一半,很奇怪.于是我只设置view的frame的x值,不设置整 ...

  10. python's fnmatch&glob&os.listdir

    [python's fnmatch&glob&os.listdir] fnmatch: fnmatch只有4种special character,用于提供和shell中一样的文件名的匹 ...