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

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);
}();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值