您的位置:首页 > Web前端 > JavaScript

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的对象属性,才能被删除

"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 ;
  }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: