javascript进阶(一)— — js暗点
来源:互联网 发布:ios程序员工资待遇知乎 编辑:程序博客网 时间:2024/04/29 19:57
1、包装对象
var a = "string";alert(a.length);//6a.t = 3;alert(a.t); //undefined
javascript让”string”基本类型会转换成 String(Object)【new String(“string”);】包装类型临时对象,所以可以a.length获取长度,a.t设置之后该临时对象会销毁掉,所以获取不到a.t的值
2、{ }正确使用
{a: 1, b: 2}; //Uncaught SyntaxError: Unexpected token :
{ 花括号开头被理解成块
var obj = {a: 1, b: 2};
正确理解为对象自变量表达式
3、var a = b = 1
的理解
function foo() { var a = b = 1;//相当于var a, (b=1);即b成了隐式全局变量}foo(); //调用后b全局可见console.log(a);//Uncaught ReferenceError: a is not definedconsole.log(b);//1
4、for in
缺点:
- 顺序不确定
- enumerable为false时不会出现
- for in对象属性受原型链的影响
5、变量提升
变量在一个范围内声明的时候,javascript引擎会将这个声明移到范围顶部。
var v='Hello World';(function(){ console.log(v); var v='I love you';})();//undefined
这段代码等价于
var v='Hello World';(function(){ var v; console.log(v); v='I love you';})();
再来一个例子
var foo = 1;function bar() { if (!foo) { var foo = 10; } console.log(foo);}bar();//输出为10,原因看下面等同代码//等同于于一下代码var foo;foo = 1;function bar(){ var foo;//undefined if(!foo){ //!foo为真,执行下面foo = 10 foo = 10; } console.log(foo);}bar();
另外一个例子:
var a = 1;function b() { a = 10; return; function a() {}}b();console.log(a); //1//等同于以下代码,原因分析如下, 声明式函数会提升置顶var a;a = 1;function b(){ function a(){}; //声明式函数会提升置顶 a = 10; return;}b();console.log(a);//这里函数b的外部定义了a,值为1.函数b内,声明函数a的过程被提升(hoist),之后a被赋值为10;由于是函数b中新定义了a,所以对函数b外部的a并不造成影响,最后得console.log(a)输出的值还是1;
同样,匿名函数也受命名提升的影响
(function(){ foo(); function foo(){ console.log("我来自 foo"); }})(); //我来自 foo(function(){ foo(); var foo = function(){ console.log("我来自 foo"); }})();//TypeError: foo is not a function
0 0
- javascript进阶(一)— — js暗点
- JavaScript 进阶(一)JS的"多线程"
- JavaScript进阶-js滚动
- javascript进阶(一)
- javascript进阶(一)
- JavaScript进阶基础一
- Javascript进阶(一)
- javascript进阶——Ajax
- JavaScript进阶篇笔记(一)
- JavaScript进阶学习(一)
- JavaScript进阶之路——认识和使用Promise,重构你的Js代码
- 8.5 js进阶学习一
- Js进阶知识(一)
- MyBatis进阶(一)—映射
- JavaScript学习笔记(一)——JS基础知识介绍
- JavaScript中的原始类型——js基础(一)
- JavaScript学习笔记(一)——JS基础知识介绍
- JavaScript学习笔记(一)——JS基础知识介绍
- 《java入门第一季》之二维数组
- Android Support兼容包详解<v4、v7>
- 打字测试(一)
- JavaScript将函数赋值给变量的易错点
- Jquery插件——Validation
- javascript进阶(一)— — js暗点
- git正确的删除远程仓库的文件并用.gitignore忽略提交此文件
- [mac]MAC实用工具集
- splay
- [ase gitblog]config.yaml配置
- TCP, UDP, Socket. 基础篇
- Leetcode题解14 345. Reverse Vowels of a String
- 发挥GPU强大动力的CG语言
- 1.PHP连接mysql中文乱码问题