zoukankan      html  css  js  c++  java
  • 犀牛书学习笔记(1):语法结构、数据类型和值、表达式和运算符

    把这三个部分写在一起,是因为这些和JAVA几乎相同,如果你有JAVA或者C的基础,可以快速阅读。这里只记录几个不一样的,需要记住的地方:

    1、直接量概念:其实就是用具体值直接赋值来创建变量,比如“hello wrold”就是一个字符串直接量方式创建了一个字符串,前面加上"var hello='hello world'"就是创建了一个hello字符串变量。

    2、基本类型:和JAVA一样,也有基本类型和引用类型之分。基本类型是通过传值方式调用,引用类型是传址方式调用。

    • 三种基本类型:数字、字符串和布尔值;
    • 小数据类型:null(空)和undefined(未定义)(小数据类型是犀牛书中称呼的),分别定义了一个值。null是一个特殊的保留关键字,表示“无值”,常用来表示“无对象”。undefined 不是保留字,表示一个未声明的变量,或已声明但没有赋值的变量,或一个并不存在的对象属性。==运算符将两者看作相等。如果要区分两者,要使用===或typeof运算符。
    • 字符串:和JAVA一样,是个字符序列,和JAVA不同,是一种数据类型,而不是对象(JAVA中字符串是不可变对象)。单引号和双引号的结果是一样的,javascript没有char类型。

    3、引用类型

    • 函数:函数是可执行的代码段,JAVA是不支持函数的,可以理解为类的方法。在javascript中,函数式第一类对象,可以和变量一样,被赋值、调用等操作;
    • 对象(object):与函数区分开的目的是说,函数是一种引用类型,但不是严格意义上的类。在js里面,对象是已经命名的数据的集合。这个定义与JAVA的对象定义差距极大。对象也有属性和方法,相关章节有更详细的描述。
    • 数组:和对象一样,也是数据的集合。不同的是,对象每个数据都有一个名字,而数组没有,只有下标(下标表示一种索引和位置,便于调用)。从这个不同之处,对象更像一个字典,而数组还是传统意义的数据的集合。不支持多维数组,但数组中的元素也可以是数组,聪明的程序员可以模拟出多维数组。
    • 内置对象:Date对象、Error对象、RegExp对象;
    • 包装对象:基本类型都具有包装对象,这点和JAVA基本类型的包装对象概念是一致的。对象和基本类型之间的转换,通过valueOf()和toString()方法来进行。

    4、传值和传址

    • 基本原则:基本类型是传值,引用类型是传址;
    • 数组和函数,是一种特殊类型的对象,采用传址方式;
    • 字符串是基本类型,但有不符合传址和传值类型,比较特殊。

    5、变量作用域:js中变量基本和JAVA类似,但变量作用域差别较大。js只有两种作用域:全局作用域和局部作用域。

    • 局部变量与全局变量重名的话,会覆盖并隐藏全局变量;
    • 没有块级作用域,所有在函数中定义的变量,就是局部变量,在函数中都能够访问到。例如函数中循环体中定义的变量,在循环体外也都能够访问到,只要是在函数内部;
    • 嵌套函数作用域:函数中变量作用域是以函数为单位的,嵌套函数的变量作用域能够访问到上级函数变量和全局变量,上级函数不能访问嵌套函数内部的变量。
    • 请重点理解变量的“作用域链”设计原理。

    6、表达式和运算符:几乎和JAVA相同,几个不同点:

    • 等同运算符===:js中特有的运算符,是一种比"=="更严格的同一性检测运算符,"=="叫相等运算符。值类型比较时,两者是相同的,只要两者的值相等,两个运算符都返回true。等同运算符通常用于引用类型,只有指向同一个对象地址的时候,才会返回true。类似于JAVA里面的.requls()方法。
    • in运算符:可简单理解为,x 在 y里面?x必须是字符串或可转换为字符串,y是一个对象或者数组。如果y有属性名为x,则返回true。
    • 字符串可以用"+"字符连接,和JAVA一样,由于是不可变对象,建议使用StringBuffer类连接字符串。
    • typeof运算符返回运算数的数据类型;
    • new运算符创建一个新对象,并调用构造函数初始化对象。和JAVA中对象创建语法相同;
    • delete运算符可删除指定对象的属性,数组的元素和变量。
    • void运算符放在运算数之前,总是返回undefined值。JAVA中用于表示方法不返回值。
    • 数组下标运算符[],用于按照下标返回数据;
    • .运算符用来存取对象的元素;
    • ()运算符用于调用函数。

    7、语句基本和JAVA相同,有各种流程控制语句、异常捕获语句、变量、函数定义、返回值语句等等。

    • function,为js独有的函数定义语句,在js中对象的方法都是用函数实现的,函数可以说是js中最为重要的数据结构。
    • 空语句:; ,一行中只有一个分号,什么都不做。
  • 相关阅读:
    面经补充
    一些杂项
    leetcode整理
    缓存问题及相关解决策略
    4.10 面经补充
    合并区间(二维数组与列表的转换)
    1.4任务
    jvm虚拟机笔记<八> 线程安全与锁优化
    jvm虚拟机笔记<七> 内存模型与线程
    jvm虚拟机笔记<六> 运行期优化
  • 原文地址:https://www.cnblogs.com/laohoo/p/3414226.html
Copyright © 2011-2022 走看看