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

JavaScript学习笔记——语句与严格模式

2016-05-05 12:32 639 查看
block块

block块语句常用于组合0~多个语句。用一对花括号定义。
语法:
{
语句1;
语句2;
...;
语句n;
}
没有块级的作用域


{
var i=10;
}
这两者效果是一样的
var i = 10;
{
...
}
console.log(i); //仍然可以访问的到
但是有函数作用域、全局作用域

function a(){
var i = 10;
}
console.log(i); //undefined

但是

function foo(){
var a = b = 1;
}
foo();
console.log(typeof a); //undefined
console.log(typeof b); //number

此时b 成为了全局变量,但是

console.log(b); //又是null

try catch

try{
throw "test";
}catch (ex){
console.log(ex); //捕获try抛出的异常
}finally {
console.log("finally"); //无论是否捕获到异常,均会执行finally的代码块
}

try catch 的嵌套语句
当内部的try抛出异常时,
1、如果内部没有catch语句捕获异常,将该异常继续向上级抛出
2、如果内部有catch语句捕获异常时,该异常被内部catch处理,不会再继续抛出

function switch 循环

function

function fd(){ //函数声明
//do sth
return true;
}
var fe = function(){ //函数表达式
//do sth
};

//函数声明会被预先处理(函数前置)
在函数声明前面调用函数也是可行的,但是函数表达式就不行

fd(); //true
function fd(){
//do sth
return true;
}

fe(); //TypeError
var fe = function(){
//do sth
};

for..in

var p;
var obj = {x:1,y:2};
for(p in obj){
console.log(p + " : " + obj[p] );
}

switch
跟其他的一样一样的
循环
一样一样的

with 不建议使用with,使作用域复杂,影响引擎优化,影响可读性

with({x:1}){
console.log(x); //相当于{x:1}.x;
}

with(document.forms[0]){
console.log(name.value); //相当于document.forms[0].name.value;
}

严格模式

严格模式是一种特殊的执行模式,它修复了部分语言上的不足,提供更强的错误检查,并增强安全性
1.不允许使用with
2.不允许未声明的变量被赋值
3.arguments变为参数的静态副本
4.delete参数、函数名报错
5.delete不可配置的属性报错
6.对象自变量重复属性名报错
7.禁止八进制自变量
8.eval,arguments变为关键字,不能作为变量或函数名

!function(a){
arguments[0] = 100; //修改第一个argument为100,即a
document.write(a); //从1 修改为 100
}(1);

在严格模式下,argument变为静态副本,任意修改都不会影响参数的值
!function(a){
'use strict';
arguments[0] = 100; //修改第一个argument为100,即a
document.write(a); //仍然为1
}(1);
但是如果传入的是个对象,arguments可修改对象的属性
!function(a){
'use strict';
arguments[0].x = 100; //修改a的属性x从1到100
document.write(a.x); //变为100
}({x:1});

function func(){
'use strict'
}

'use strict'
function func(){
}

!function(){
var obj = {x:1,x:2}; //取最后一个值
console.log(obj.x);
}();

!function(){
'use strict';
var obj = {x:1,x:2}; //严格模式下报错 SyntaxError
console.log(obj.x);
}();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: