JS笔记day1
2016-11-23 23:48
127 查看
我们通常所说的ECMAScript 即 javascript,但是javascript的范围更广。 javascript 包括 Ecmascript,DOM,BOM。
ECMAScript是欧洲计算机制造协会制定的javascript标准,所有js实现都基于这个标准。javascript是一门面向对象的解释型语言,事件驱动语言
它是脚本语言。JS中一切都是对象
javascript区分大小写,所有浏览器中默认支持javascript,所有js代码都写在<script type="text/javascript"> </script>中 默认类型就是javascript
所以type也可以不写,一般来说javascript代码从上到下,从左往右按顺序执行。 一般将<script>放在<head>中,当<script src="xx.js"></script>引入
外部脚本时,在<script> var x=1</script>之间的代码会被忽略。 由于JS是从上往下加载,当JS资源未加载完成我们就看不到页面,这可能造成页面延迟
导致用户体验不好,我们可以将<script>引入外部脚本放到页面最底下,这样保证先加载页面。 js中有 defer 属性<script defer="defer"></script>,这个属性是JS
懒加载属性,当页面加载完成再加载JS资源,不过有的浏览器可能不支持,还是推荐将<script>放到底部
Javascrpit 变量是松散类型的当它被赋值的才能真正确定其数据类型,JS标识符只能由数字,字母,下划线,$,组成,不能以数字开头
JS中标识符区分大小写,var A 和 var a是不一样的,关键字和保留字不能作为标识符(比如break,continue等)
JS中单行注释用// ,多行注释/** */
ECMASCript5 引入了严格模式(strict model),在严格模式下ECMAScript3 中一些不确定的行为将得到处理,而且对某些不安全的操作也会抛出错误
要在整个脚本中启用严格模式,在最顶上添加"use strict", 也可以指定函数在严格模式下执行 例如:function test(){ "user strict"; //函数体}
正常模式下如果一个变量没有被声明就赋值,默认就是全局变量,而在全局模式当中这个是禁止的会报错;例如
function test(){
"user strict";
a=1;// 报错
}
在严格模式下,变量都必须先用var命令声明,然后再使用
在严格模式下禁止this 关键字指向全局对象
function f(){
return !this; //返回false,此时this指向全局变量 this为true,所以!this为false
}
function f(){
"use strict";
return !this; //返回true,此时的this为undefined,根据boolean 转换规则,undefined为false,所以!this为true
}
使用构造函数时,如果忘记加了new,this不再指向全局对象而是报错
function f(){
"user strict";
this.a=1;
}
f();//报错this 未定义
严格模式下禁止删除变量。只有当configurables设置为true的对象属性,才能被删除
对象不能有重名的属性
正常模式下,如果对象有多个重名属性,最后赋值的那个属性会覆盖前面的值。严格模式下,这属于语法错误。
正常模式下,如果函数有多个重名的参数,可以用arguments[i]读取。严格模式下,这属于语法错误。
ECMAScript是欧洲计算机制造协会制定的javascript标准,所有js实现都基于这个标准。javascript是一门面向对象的解释型语言,事件驱动语言
它是脚本语言。JS中一切都是对象
javascript区分大小写,所有浏览器中默认支持javascript,所有js代码都写在<script type="text/javascript"> </script>中 默认类型就是javascript
所以type也可以不写,一般来说javascript代码从上到下,从左往右按顺序执行。 一般将<script>放在<head>中,当<script src="xx.js"></script>引入
外部脚本时,在<script> var x=1</script>之间的代码会被忽略。 由于JS是从上往下加载,当JS资源未加载完成我们就看不到页面,这可能造成页面延迟
导致用户体验不好,我们可以将<script>引入外部脚本放到页面最底下,这样保证先加载页面。 js中有 defer 属性<script defer="defer"></script>,这个属性是JS
懒加载属性,当页面加载完成再加载JS资源,不过有的浏览器可能不支持,还是推荐将<script>放到底部
Javascrpit 变量是松散类型的当它被赋值的才能真正确定其数据类型,JS标识符只能由数字,字母,下划线,$,组成,不能以数字开头
JS中标识符区分大小写,var A 和 var a是不一样的,关键字和保留字不能作为标识符(比如break,continue等)
JS中单行注释用// ,多行注释/** */
ECMASCript5 引入了严格模式(strict model),在严格模式下ECMAScript3 中一些不确定的行为将得到处理,而且对某些不安全的操作也会抛出错误
要在整个脚本中启用严格模式,在最顶上添加"use strict", 也可以指定函数在严格模式下执行 例如:function test(){ "user strict"; //函数体}
正常模式下如果一个变量没有被声明就赋值,默认就是全局变量,而在全局模式当中这个是禁止的会报错;例如
function test(){
"user strict";
a=1;// 报错
}
在严格模式下,变量都必须先用var命令声明,然后再使用
在严格模式下禁止this 关键字指向全局对象
function f(){
return !this; //返回false,此时this指向全局变量 this为true,所以!this为false
}
function f(){
"use strict";
return !this; //返回true,此时的this为undefined,根据boolean 转换规则,undefined为false,所以!this为true
}
使用构造函数时,如果忘记加了new,this不再指向全局对象而是报错
function f(){
"user strict";
this.a=1;
}
f();//报错this 未定义
严格模式下禁止删除变量。只有当configurables设置为true的对象属性,才能被删除
"use strict"; var x; delete x; // 语法错误 var o = Object.create(null, {'x': { value: 1, configurable: true }}); delete o.x; // 删除成功
对象不能有重名的属性
正常模式下,如果对象有多个重名属性,最后赋值的那个属性会覆盖前面的值。严格模式下,这属于语法错误。
"use strict"; var o = { p: 1, p: 2 }; /
正常模式下,如果函数有多个重名的参数,可以用arguments[i]读取。严格模式下,这属于语法错误。
"use strict"; function f(a, a, b) { // 语法错误 return ; }
相关文章推荐
- JS学习笔记——DAY1
- Vue.js实战笔记Day1(vue-cli)
- JS学习笔记day1
- 学习altas笔记[客户端JS和Altas环境初始化关系和DataTable返回数据的客户端处理]
- prototype.js开发笔记
- 学习Altas 笔记[JS简单调用服务端方法]
- 学习Altas 笔记[JS简单调用服务端方法]
- JS培训课笔记
- [转]prototype.js开发笔记(针对Ajax的JS框架Prototype的使用介绍)
- prototype.js开发笔记 (转)
- 学习Altas 笔记[js调用重载的方法出错,如何处理]
- prototype.js开发笔记
- prototype.js开发笔记
- JS学习笔记
- prototype.js开发笔记
- 学习altas笔记[客户端JS和Altas环境初始化关系和DataTable返回数据的客户端处理]
- prototype.js开发笔记zz
- ajaxPro /prototype.js 学习笔记
- 学习altas笔记[客户端JS和Altas环境初始化关系和DataTable返回数据的客户端处理]
- prototype.js开发笔记(3)