`

JavaScript深入浅出学习笔记(三)—语句

阅读更多

        JavaScript程序由语句组成、语句遵守特定的语法规则。例如:if语句,while语句,with语句等等。

一.block语句、var语句

1.block语句

        block语句常用于组合0-多个语句。块语句用一对花括号定义。

语法:

{

        语句1;

        语句2;

         ...

        语句n;

}

如:

{
      var str = "hi";
      console.log(str);
}

if(true) {
      console.log('hi');
}

注意:

1.console中输入{a:1,b:2}会报错:SyntaxError:Unexpected token:因为被浏览器理解为块了。应该:var o = {a:1,b:2};

2.没有块级作用域,如下两种写法是等价的:


        而如下则是函数作用域:

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

2.var语句

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

正确做法:

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

 

二.try-cath语句

1.

try {
      throw "test";
}catch(ex) {
     console.log(ex);//test
}finally {
     console.log('finally');
}

运行结果:

test
finally

 

2.

try {
      //do sth
}finally {
      console.log('finally');
}

运行结果:

finally

3.

try {
     try {
            throw new Error("oops");
      }finally {
            console.log("finally");
      }
}catch(ex) {
      console.error("outer", ex.message);
}

运行结果:

finally
outer oops

4.

try {
     try {
            throw new Error("oops");
      }catch(ex) {
            console.error("inner", ex.message);
      }finally {
            console.log("finally");
      }
}catch(ex) {
      console.error("outer", ex.message);
}

运行结果:

inner oops
finally

5.

try {
     try {
            throw new Error("oops");
      }catch(ex) {
            console.error("inner", ex.message);
            throw ex;
      }finally {
            console.log("finally");
      }
}catch(ex) {
      console.error("outer", ex.message);
}

运行结果:

inner oops
finally
outer oops

 

三.函数、swith、循环

1.函数

    函数声明

 

fd();//true
function fd() {
     //do sth.
     return true;
}
   函数表达式

 

 

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

 

 

2.swith

a.

 

var val = 2;
switch(val) {
     case 1:
            console.log(1);
            break;
     case 2:
             console.log(2);
             break;
      default:
             console.log(0);
             break;
}
//2
b.

 

 

var val = 2;
switch(val) {
     case 1:
            console.log(1);
     case 2:
             console.log(2);
      default:
             console.log(0);
}
//2
//0

 

c.

val = 2;
switch(val) {
     case 1:
     case 2:
     case 3:
            console.log(123);
            break;
     case 4:
     case 5:
             console.log(45);
             break;
      default:
             console.log(0);
}
//123

3.循环

for...in

 

var p;
var obj = {x:1,y:2}
for(p in obj) {
}
for...in特点:

 

        a).顺序不确定

        b).enumerable为false时不会出现

        c).for in对象属性时受原型链影响

 

4.with语句

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

with(document.forms[0]) {
       console.log(name.value);
}
或
var form = document.forms[0];
console.log(form.name.value);

        实际上,在JavaScript中不建议使用with了,因为:

        a.让JS引擎优化更难

        b.可读性差

        c.可被变量定义代替

        d.严格模式下被禁用

 

四.严格模式

        严格模式是一种特殊的执行模式,它修复了部分语言上的不足,提供更强的错误检查,并增强安全性。

        1.让函数里的代码在严格模式下运行:

function func() {
     'use strict';
}

        2.在整个文件的最开头部分写‘use strict',这样这个文件内的所有JS代码都在严格模式下执行

'use strict';
function func() {
}

        当然,在'user strict'也可以写’abc'等其它语句,但不可以写var a;之类的。

        3.严格模式的特点

a).不允许用with


 

b).所有变量必须声明,赋值给未声明的变量报错,而不是隐式创建全局变量



c).eval中的代码不能创建eval在作用域下的变量、函数。而是为eval单独创建一个作用域,并在eval返回时丢弃



d).函数中的特殊对象arguments是静态副本,而不像非严格模式那样,修改arguments或修改参数变量会相互影响


 

e).删除configurable=false的属性时报错,而不是忽略





f).对象字面量重复属性名报错


 

g).禁止八进制字面量,如010(八进制的8)


 

h).eval,arguments变为关键字,不可作为变量名、函数名等


 

i).一般函数调用时(不是对象的方法调用,也不使用apply/call/bind等修改this)this指向null,而不是全局对象

 

j).若使用apply/call,当传入null或undefined时,this将指向null或undefined,而不是全局对象

 

k).试图修改不可写属性(writable=false),在不可扩展的对象上添加属性时报TypeError,而不是忽略

 

l).arguments.caller,arguments.callee被禁用

 

 

学习视频:http://www.imooc.com/learn/277

  • 大小: 29.2 KB
  • 大小: 27.1 KB
  • 大小: 28.3 KB
  • 大小: 37.2 KB
  • 大小: 29.5 KB
  • 大小: 55.6 KB
  • 大小: 27.6 KB
  • 大小: 25.1 KB
  • 大小: 29.4 KB
  • 大小: 39.8 KB
分享到:
评论

相关推荐

    深入浅出javascript(pdf)

    "深入浅出JavaScript"这本书显然旨在帮助读者全面理解这种强大的编程语言,包括其核心概念、语法以及实际应用。 JavaScript的基础部分涵盖变量、数据类型、控制流(如条件语句和循环)、函数等。变量是存储数据的...

    《李炎恢Javascript笔记》+源码

    《李炎恢Javascript笔记》是一本深入浅出的JavaScript学习资料,它涵盖了JavaScript的基础到实践应用的诸多方面。这本书的特点是将复杂的编程概念分解为易于理解的小知识点,并且提供了源码示例,使得读者能够更好地...

    JavaScript-学习笔记.docx

    JavaScript是一种广泛应用...以上就是JavaScript学习笔记中的主要知识点,理解和掌握这些内容对于深入学习JavaScript至关重要。在实际编程中,还需要结合具体的场景灵活运用,并不断实践和探索更高级的特性和最佳实践。

    张孝祥JAVASCRIPT笔记

    张孝祥是一位知名的编程教育者,他的JavaScript教程以其深入浅出的讲解方式深受广大程序员喜爱。他的笔记涵盖了JavaScript的核心概念、语法、数据类型、控制结构、函数、对象、数组、字符串、正则表达式、DOM操作、...

    跟李彦恢学javascript 电子书和课堂笔记1-15章.rar

    这本书深入浅出地介绍了JavaScript的基础知识,帮助读者掌握这门强大的脚本语言。JavaScript是一种广泛应用于Web开发的编程语言,它在网页交互、动态效果以及前后端数据交换等方面发挥着重要作用。 本书涵盖了1-15...

    韩顺平html+css+javascript笔记完整版

    "韩顺平html+css+javascript笔记"是一套全面的前端学习资料,韩顺平是一位知名的编程教育专家,他的讲解通常深入浅出,适合初学者。笔记中可能涵盖了HTML的基本结构和语义化,CSS的选择器、布局和动画,以及...

    JavaScript忍者秘籍(第2版)笔记、习题与解析

    《JavaScript忍者秘籍(第2版)》是JavaScript编程领域的一本经典之作,它深入浅出地介绍了JavaScript的核心概念和技术。这本书不仅包含了基础语法,还涵盖了高级特性,旨在帮助读者成为JavaScript的高手,即“忍者...

    韩顺平笔记.zip

    韩顺平老师是业界知名的IT教育专家,他的教程以其深入浅出的讲解方式深受广大程序员喜爱。这份笔记集合了他的教学经验,旨在帮助学习者更好地理解和掌握这些关键的技术。 1. **Java**: Java是一种广泛应用的面向...

    韩顺平php全套视频教程笔记

    这份笔记以中文为载体,深入浅出地涵盖了PHP语言的核心概念、语法以及实际应用,旨在帮助PHP初学者或进阶者系统性地掌握这一流行的服务器端脚本语言。 首先,从基础部分开始,笔记详细讲解了PHP的安装配置,包括在...

    方立勋JavaWeb视频前十一天笔记word

    方立勋作为一位知名的IT教育专家,他的课程通常深入浅出,适合初学者和有一定基础的学习者。 在压缩包内的文件"方立勋JavaWeb视频前十一天笔记word+V2.docx"中,我们可以期待看到以下JavaWeb开发的关键知识点: 1....

    狂神说Java系列笔记.rar

    4. **6、JavaSE:面向对象.pdf**:面向对象编程(OOP)是Java的基础,这部分笔记将详细解析类、对象、封装、继承、多态等概念,深入浅出地介绍Java的面向对象特性。 5. **18、前端:JavaScript、jQuery.pdf**:虽然...

    超详细java笔记

    Java是世界上最流行的编程语言之...这份笔记深入浅出地介绍了Java开发的基本概念和技术,对于初学者和有一定经验的开发者来说都是宝贵的资源。通过阅读和实践,你将能够全面掌握JavaSE,并能进一步探索Web开发的深度。

    JavaWeb笔记[培训时,老师做的笔记]

    JavaWeb是Java技术在Web应用开发中的...这份笔记可能会深入浅出地解释这些概念,并辅以实例代码,帮助读者更好地理解和掌握JavaWeb开发。通过学习和实践这些内容,开发者可以构建出功能丰富、性能良好的Web应用程序。

    Curso-[removed]JavaScript语言学习资料库

    这个课程由知名教育家古斯塔沃·瓜纳巴拉(Gustavo Guanabara)教授,他在IT教育领域有丰富的教学经验,他的课程通常深入浅出,易于理解。 【描述】:该“JavaScript课程”涵盖了JavaScript的基础到高级主题,包括...

    狂神说笔记,个人觉得不赖

    这套笔记以其深入浅出的讲解方式,为Java学者提供了一个良好的学习路径。 首先,我们来看【1、JavaSE:Java入门.pdf】,这个部分通常会介绍Java的历史背景、安装配置JDK(Java Development Kit)、编写第一个Hello ...

    韩顺平的php课程笔记

    韩顺平老师的笔记深入浅出地讲解了PHP对字符串和数组的操作技巧。 1. 字符串处理:PHP提供了诸多字符串函数,如strlen()用于获取字符串长度,str_replace()用于替换子串,explode()和implode()用于字符串的分割与...

    狂神java全套PDF笔记涵盖java js javaweb sping spingmvc spingcloud

    总的来说,这份资料是一份宝贵的Java和JavaScript学习资源,无论你是初学者还是经验丰富的开发者,都能从中获益匪浅。通过深入学习和实践,你将能够掌握Java语言及其在Web开发中的应用,成为一名优秀的Java工程师。

    吴天雄--JavaWeb完整笔记.doc

    这篇文档由吴天雄编写,包含九个主要模块,深入浅出地介绍了JavaWeb开发的关键技术。以下是对这些模块的详细解析: 模块一:JavaWeb入门概念 1. JSP(JavaServer Pages)是一种动态网页技术,用于结合静态HTML和...

    谭浩强c语言电子书

    这本书深入浅出地讲解了C语言的基础概念、语法结构以及编程技巧,是学习C语言的经典之作。 C语言是一种强大的、通用的、面向过程的编程语言,它以其简洁、高效和灵活的特点,在计算机科学领域占据了重要的地位。...

Global site tag (gtag.js) - Google Analytics