JavaScipt的坑(一)

函数作用域
js没有块级作用域

function test(){
var i = 0;
if(i==0){
var j=0;
for(var k=0;k<10;k++){
console.log(k) //0,1,2...9
}
console.log(k);//10
}
console.log(j);//0
}
test();

声明提前:(变量的初始化还是在原位置)《JavaScript权威指南》P57
P94 for循环里声明的变量也会“提前”

var scope = "global";
function f(){
console.log('1 '+scope);  //1 undefined
var scope = 'local';
console.log('2 '+scope); //2 local
}
f();

js所有数字都是浮点型的。P70
5/2 = 2.5 , 0 / 0 = NaN,
3/0 = Infinity(正无穷大,不报错)-1/0 = -Infinity(负无穷大,不报错)
6.5%2.1 = 0.2(%求余运算也适用于浮点数,经检验结果是0.19999999999999973)

null和undefined

undefined==null  //true
undefined==undefined   //true
null == null  //true
NaN ==NaN   //false
null == undefined   //true
null === undefined   //false
typeof null  //"object"
typeof undefined   //"undefined"

P71

true+true//2 布尔值转化为数字
1+{}   //"1[object Object]"  对象转化为字符串后进行字符串连接
2+null  //2  null转化为0进行加法
1+NaN  //NaN
2+undefined  //NaN  undefined转为NaN进行加法
1+2+"nice"  //"3nice"
1+(2+"nice")  //"12nice"
yunsuan.png

"++"从不做字符串连接操作P72

x="1";x+1  //"11"
x="1";x++  //1
x  //2
x="1";++x //2

恒等运算符===

var s="s";var t=new String("s");
s==t;   //true
s===t;  //false

闭包(课外)

function count() {
    var arr = [];
    for (var i=1; i<=3; i++) {
        arr.push(function () {
            return i * i;
        });
    }
    return arr;
}

var results = count();
var f1 = results[0];
var f2 = results[1];
var f3 = results[2];
f1();//16
f2();//16
f3();//16

检测一个对象是否是另一个对象的原型(或者在原型链中),使用isPrototypeOf()方法。(P139)
例:p.isPrototypeOf(q); //检测p是否是q的原型

数组
1.js数组可能是稀疏的,数组元素的索引不一定要连续的,它们之间可以有空缺。
2.如果数组是稀疏的,length属性值大于元素个数,即包含稀疏元素。
3.数组直接量的语法允许有可选的结尾的逗号。例:
var arr=[,,];//数组只有2个元素(不是3个,缺省值),都是undefined,且这不是稀疏数组。P147
4.将数组的length设置为一个比当前长度小的非负整数n,则删除大于或等于n的索引的元素。例:a.length=0;//删除数组a的所有元素
.将数组的length设置为一个比当前长度大的非负整数n,实际上不会向数组添加新的元素,而在数组尾部创建一个空的区域。
5.for/in循环能够枚举继承的属性名。数组遍历不建议使用这样的遍历方式。
6.forEach遍历数组:P151
arr.forEach(function(x){
alert(x);
})
7.数组元素拼接:arr.join(); P152
将数组中的所有元素都转换成字符串并拼接起来,返回最后生成的字符串。可指定一个字符串在生成字符串时分隔各个元素。若不指定,则默认使用逗号分隔。
var a=[1,2,3];
a.join(); //"1,2,3"
a.join(" ");//"1 2 3"
String.split()是将字符串分割成若干部分来组成数组。
8.数组反转:arr.reverse(); P152
将数组中的元素颠倒顺序,返回逆序的数组。
var a=[1,2,3];
a.reverse();//a=[3,2,1];
9.数组排序:arr.sort(); P152
如果数组包含undefined,则被排到最后。
var a=[2,1,4];
a.sort(); //a=[1, 2, 4]
10.拼接数组:arr.concat();
var a=[1,2];
a.concat(3,4);//a=[1,2,3,4]
11.arr.slice();返回数组的一个片段或者子数组(不修改调用的数组)。
var a=[1,2,3,4,5];
a.slice(0,3);//[1,2,3]
a.slice(3);//[4,5] 返回下标为3至数组结束的子数组。
a.slice(1,-1);//[2,3,4] -1表示数组最后一个元素的前一个,返回下标为1至倒数第二个元素。
a.slice(-3,-2);//[3]
12.splice() 在数组中插入或删除元素(修改调用的数组)P154
13.unshift()和shift()
unshift():在数组的头部添加一个或多个元素,并将已存在的元素移动到更高的索引来获取足够的空间,并返回数组新的长度。
shift():删除数组的第一个元素并将其返回,然后把所有随后的元素下移一个位置连填补数组头部的空缺。
var a=[];
a.unshift(1);//a = [1],返回1(长度)
a.unshift(2,[3,4]);//a=[1,2,[3,4]],返回3(长度)
a.shift(); //a=[2,[3,4]],返回1(删除的元素)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,761评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,953评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,998评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,248评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,130评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,145评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,550评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,236评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,510评论 1 291
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,601评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,376评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,247评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,613评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,911评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,191评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,532评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,739评论 2 335

推荐阅读更多精彩内容

  • Javascript有很多数组的方法,有的人有W3C的API,还可以去MDN上去找,但是我觉得API上说的不全,M...
    顽皮的雪狐七七阅读 4,040评论 0 6
  • js基础篇(三)——DOM的各种操作js基础篇(二)——字符串的各种操作 1. 创建数组 创建一个数组,有三种方法...
    hanyuntao阅读 1,607评论 0 14
  • 数组的定义 数组是按序号排列的一组值,每个值的位置都有编号(从0开始)。数组本质上是一种特殊的对象。它的键名是按(...
    Allin_Lin阅读 535评论 0 0
  • 由于最近都在freecodecamp上刷代码,运用了很多JavaScript数组的方法,因此做了一份关于JavaS...
    2bc5f46e925b阅读 1,951评论 0 16
  • 《遇见,预见课程拓展课程》 2017年5月2日 温州绣山中学 《遇见,预见课程拓展课程》 音乐欣赏: 问:刚才反复...
    文釆生辉阅读 306评论 0 0