不熟悉地方的记录,以下JavaScript以Js简称。
2015-07-08 20:59:15
判断对象的属性是否存在:in 或者 hasOwnProperty( )
JavaScript中的true和false:把null、undefined、0、NaN和空字符串''视为false,其他值一概视为true,因此上述代码条件判断的结果是true。
Map类型:对Js中array和object的补充,注意的地方是遍历时要参数,以及函数的驼峰命名法。
var m = new Map([[1, 'a'], [2, 'b'], [3, 'c']]); m.forEach(function(element, index, map) { document.write(element + ':'); document.write(index + '<br />'); });
typeof的用法:详见 - JavaScript中typeof知多少?
argument:解决一次性传入多个同等参数
function foo(x) { alert(x); // 10 for (var i=0; i<arguments.length; i++) { alert(arguments[i]); // 10, 20, 30 } } foo(10, 20, 30);
函数变量的定义:在哪定义,在哪使用;嵌套使用,内优于外;变量定义,放在前面。
很有趣的一个技巧,变量命名冲突性的避免:自己设定一个全局变量,以后的所有变量都绑定在其上,如SXX.version
// 唯一的全局变量 MYAPP:var MYAPP = {}; // 其他变量: MYAPP.name = 'myapp'; MYAPP.version = 1.0; // 其他函数: MYAPP.foo = function () { return 'foo'; };
关于ES6的看法:ES6是一个新出的标准,纵观Js的历史,每次新版本的发布,都差不多要十年才能被主流使用,这是前端开发的囧境。同样的,这个ES6估计要等到2020年才能充分的支持(目前firefox和chrome支持,ie8以后也支持),要提前只有等win10出来并大力推广其斯巴达浏览器,彻底消灭ie6-7以及基于这两款内核的部分国产浏览器了。介于此,至少在近几年,还是需要注意Js的写法,不能太多的使用ES6的属性,特别是在修改老的Js代码的时候。 关于ES6的一些变动,详细的可以参考这里 - ES6变动,这个博客的作者是校友紫云飞前辈,一起吃过一次饭,现就职于阿里。
Js中this的用法:this一般是在函数里面做函数体的递归调用(函数里面调用自己),也就是this方法替代的是他的父级函数的函数体。理解起来有点麻烦,这点在PHP中体现的比较好,在Js中,有的时候(如父级函数里面还有别的函数或者方法)也会只指向同级的函数或方法,为了避免发生错误,引用一个that来替换this。this在Js中,要慎用!
'use strict'; var xiaoming = { name: '小明', birth: 1990, age: function () { var that = this; // 在方法内部一开始就捕获this function getAgeFromBirth() { var y = new Date().getFullYear(); return y - that.birth; // 用that而不是this } return getAgeFromBirth(); } }; xiaoming.age(); // 25
apple( ) 和 call( ) :很重要,用的比较多,关于两者参数的设定重点记住一下。都可以让一个函数内部的this调用参数设定的函数体。
2015-07-06 00:10:46
strict模式:Js设计之初,变量的定义没有强制要求加 var ,这样子会出现没加var限定的变量成为全局变量,而造成不可检测到的bug。ECMA组织后来规范了,但老程序还是有。
解决方法:在Js代码最前面,加上一句
'use strict';
Unicode字符:相关的是中文字符,中文字符改如何处理呢。
解决方法:'\u6587' 表示 '文',同样的,我的名字可以表示为 '\u738b' '\u521a' '\u521a'
多行字符串:ES6标准新定义了一种模式,用反引号框起来。
浏览器要求:IE7以上,如果浏览器不支持,会报 SyntaxError 错误
alert(` 我是 一个小孩子 哈哈 `);
字符串的开挂使用:在适当的时候,可以将字符串当成数组用,但仅限于查询。
console > var s='hello, world'; undefined s[0]; "h" s.length; 12 s[s.length-1]; "d"
看到这里:http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/00143449922400335c44d4b8c904ff29a78fd4334347131000