JavaScript(基础知识注意点1)

1.变量作用域

  • Javascript的变量的scope是根据方法块来划分的(也就是说以function的一对大括号{ }来划分)。切记,是function块,而for、while、if块并不是作用域的划分标准。
  • 当全局变量跟局部变量重名时,局部变量的scope会覆盖掉全局变量的scope,当离开局部变量的scope后,又重回到全局变量的scope,而当全局变量遇上局部变量时,怎样使用全局变量呢?用window.globalVariableName。
  • Javascript在执行前会对整个脚本文件的声明部分做完整分析(包括局部变量),从而确定实变量的作用域。也就是变量提升。

2.变量提升

  • JavaScript的函数定义有个特点,它会先扫描整个函数体的语句,把所有申明的变量“提升”到函数顶部。

3.严格模式

  • strict模式,在JS代码中的首行写上:'use strict';
  • 严格模式下,所有变量名没有前缀var的都会报错。
  • 非严格模式下,没有var前缀下,变量会隐式得申明为全局变量。(虽然是这么说的,但是我的调试结果,有加var和没加var的scope是一样的。)

4.几大类型的判断

  • string: typeof varname === "string";
  • number: typeof varname==="number"(特别注意NaN)
  • undefined:typeof varname==="undefined" 或varname===undefined(注意双引号)
  • function: typeof varname==="function"或varname instanceof Function
  • null: varname === null
  • object: 对象的比较采用的内存地址值的比较(传说是这样的,具体等我看完犀牛书再说。)
  • NaN: isNaN(varname);

注:这边的typeof 是一个函数,返回值是一个string字符串

5.关于IF判断语句注意点

  • if中判断条件如果没有特别指定,比如用==,===,<,>这样的,一律采用Boolean转化。
  • Boolean转化中,除了"",NaN,undefined,null,0,false这六个其他一律为ture。
    注:要特别注意"null","0","NaN"这样的值为true。

6.类型转化的问题

  • pareInt和pareFolat的转化规则:
    1. 忽略字符串前面的空白字符,找到第一个非空白字符
    2. 如果第一个字符不是-或者数字返回NaN
    3. 如果是继续解析,直到非数值模式为止
    4. 0开头会当做八进制,0x开头会当做十六进制,但是可以指定第二个参数指定基数.
    例如:
    parseInt('blue'); //NaN
    parseInt('-23ABS'); // -23
    parseInt('0xf1'); // 241
    parseInt('101', 2); // 5
  • "+"法操作符:
1.在两个操作数都是数字的时候,会做加法运算
2.两个参数都是字符串或在有一个参数是字符串的情况下会把另外一个参数转换为字符串做字符串拼接
3.在参数有对象的情况下会调用其valueOf或toString
4.在只有一个字符串参数的时候会尝试将其转换为数字
5.在只有一个数字参数的时候返回其正数值```



###7."短路"取值问题###
- 一般用于函数的参数取默认值,如下(0为默认值):
var s="name"||0;//s="name"
var s=undefined||0;//s=0;```

8."=="运算判断###

  • 如果两个值类型相同,则执行严格相等的运算
  • 如果两个值的类型不同
1.如果一个是null,一个是undefined,那么相等
2.如果一个是数字,一个是字符串,先将字符串转为数字,然后比较
3.如果一个值是true/false则将其转为1/0比较
4.如果一个值是对象,一个是数字或字符串,则尝试使用valueOf和toString转换后比较
5.其它就不相等了```

###9.其他要注意的点###
- 浮点数是不精确的(由计算机的原理导致),所以如果要用浮点数做比较,最好使用减法然后结果小于某个较小的小数。
- String中的trim()方法在IE9以下无法使用,建议自己写一个一样功能的函数绑定到string上。(例如:```String.prototype.fun1=function (){ console.log("successful")};```)
- 空数组和null的typeof 为"object"
- void运算符的作用是执行一个表达式,然后返回undefined。
- 逗号运算符用于对两个表达式求值,并返回后一个表达式的值。
- switch语句进行比较的时候是全等于(===)操作,不会发生类型转换,切条件可以是任意表达式,比如某函数返回值。
- with语句很少用到,作用是把代码的作用域设置到一个特定对象里。

###10.ES6的新点(关于基础的)###
- 引入新数据结构map,用法:var map=new map();
- 引入新数据结构set,用法:var set=new set();
- for ... of循环(与for in的区别只遍历集合自身的属性)。
- rest参数 接受函数中多余的参数,比函数中内置的arguments方便。(使用方式...rest)。
- 为了解决块级作用域,ES6引入了新的关键字let,用let替代var可以申明一个块级作用域的变量。
- ES6标准引入了新的关键字const来定义常量,const与let都具有块级作用域。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容