JavaScript是实现ECMAScript标准的语言,目前最新的第六版标准于2015年6月发布,简称ES6。目前大多数浏览器都只是实现了ECMAScript标准的第五版。JavaScript的运行需要一个宿主环境,浏览器是最常见的宿主环境,另外还有服务器端环境Node等等。

类型

任何一门编程语言都少不了数据类型,那么在JavaScript中的类型有:

1. Number

2. String

3. Boolean

4. Object (Function, Array, Date, RegExp)

5. Null

6. Undefined

7. Error

8. Symbol

9. Class

虽然说类型有很多,但是只要记住,在JS中只有两种类型:值类型,引用类型。

值类型:number, string, boolean

基本的引用类型:Array, Object, Function

其他的类型都是在ES6中被引入的,包括Class,  Symbol 等等。

另外比较特殊的类型就是 null,  undefined

于是乎这里引入了第二个问题:typeof 能够得到哪些类型值?

首先,typeof的返回值是字符串

其次,能够得到 string boolean number (三大基本类型) 和  object, function, null, undefined

第三个问题,既然typeof不能用来区分引用类型,那么我该如何来区分引用类型呢?

这时候就需要用到 instanceof 运算符,用来检测一个对象在其原型链上是否具有一个构造函数的prototype属性

更多信息请访问 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/instanceof

Number

数字直接量:分为十进制,八进制和十六进制。但是在ES6的严格模式下,禁止使用八进制直接量。

Number对象是经过封装的能够让你处理数字值的对象,Number对象是由Number()构造器创建的。

new Number(value);

JavaScript采用IEEE754标准定义的双精度64位格式(double-precision 64-bit format IEEE754 values),不区分整数值和浮点数值,所有数字都是浮点数值表示,因此小数相加会有精度不准的问题。

内置对象Math处理高级数学函数和常数,内置函数parseInt()将字符串转换为整数,parseFloat()按照十进制格式解析浮点数字符串,运算符+把数字字符串转换为数值,特殊的Number值NaN进行数学运算都是NaN,内置函数isNaN()可以判断一个变量是否为NaN,Infinity, -Infinity分别表示正无穷和负无穷,内置函数isFinity()可以判断一个变量是否为正无穷,负无穷或者NaN

需要详细了解Number可访问 [JavaScript语法学习]全面介绍Number

String

JavaScript中的字符串是一串Unicode字符序列

需要详细了解String可访问 [JavaScript语法学习]全面介绍String

其他类型

null表示空值,必须使用null关键字才能访问。

undefined是未定义类型的对象,表示一个未初始化的值。变量声明但是没有赋值则表示为undefined类型

可以理解为undefined是从null派生出来的一个数据类型,所以undefined == null 为真,但是 undefined === null 为假

布尔值true,false。其他类型的变量转换为布尔值类型的规则: false, 0, "", NaN, null, undefined都转换为false 其他则为true

也可以使用Boolean()函数进行显示转换

最后,提到类型,肯定忘不了类型转换和类型比较。

数据转换涉及到各种类型之间相互转换的规则,而类型比较则是在前者的基础上弄明白==和===这两个比较运算符的区别。

在if语句,+运算符,==,===,!! 以及 逻辑运算 这几种情形下,都会涉及到类型转换。具体的类型转换表如下

[此处的贴图还没有制作好,对不住了]

变量作用域

在ES5中,语句块是没有作用域的,在JS中只有函数才有作用域。 但是从ES6开始,可以使用let, const关键字创建块作用域的变量

函数

函数是JS中的一等公民,如果一个函数没有return语句或者是一个没有值的return语句,则表示返回undefined

如果调用函数时没有提供足够的参数,那么缺少的参数会被undefined替代

函数体中有一个名为arguments的内部对象,是一个类似于数组的对象,但并是array数组,包括了所有传入的参数。

function add(){var sum = 0;for(var i = 0; i < arguments.length; i++){sum += arguments[i];}return sum;
}
add(2,3,4,5);

function svg(){var sum = 0;for(var i = 0; i < arguments.length; i++){sum+=arguments[i];}return sum/arguments.length;
}
svg(2,3,4,5);

return语句有个小坑: 前面两个函数执行都没有问题,最后一个返回undefined

function foo(){return { name: "foo"};
}function foo(){return { name: "foo"};
}function foo(){return { name: "foo"};
}

需要详细了解函数类型,可访问 [JavaScript语法学习]全面介绍函数

其他知识点

delete运算符 用于删除一个对象的属性

delete expression

delete object.property

delete object['property']

如果属性是一个不可配置的属性,那么在严格模式下删除会抛出异常,而在非严格模式下返回false.  其他情况下都返回true

只能删除自身属性,而不能删除继承属性

for...in循环只遍历可枚举属性,包含自身和继承的属性

propertyIsEnumerable()返回布尔值,表明指定的属性是否是当前对象可枚举的自身属性

hasOwnProperty() 判断某个对象是否含有指定的自身属性

keys() 返回由给定对象的所有可枚举自身属性的属性名组成的数组

Object.getOwnPropertyNames() 返回由指定对象的所有自身属性的属性名 (包括不可枚举属性) 组成的数组

转载于:https://www.cnblogs.com/joyjoe/p/6160686.html

[JavaScript语法学习]重新认识JavaScript相关推荐

  1. 《Javascript入门学习全集》 Javascript学习第二季(实战4)

    Javascript学习第二季(实战4)   上章的例子虽然实现了功能,也做了相应的判断,也符合标准了.但还有一个问题就是: Choose an image. 在html中只是为了图片切换 而做的,而 ...

  2. 《Javascript入门学习全集》 Javascript学习第一季(7)

    Javascript学习第一季(7)   上篇文章我们讲了 用dom方式 创建节点,复制节点,插入节点. 今天我们将讲 删除节点,替换节点,查找节点等. 直接从方法说起: <!--[if !su ...

  3. 常用JavaScript语法107条

    2019独角兽企业重金招聘Python工程师标准>>> 1.什么是JavaScript? JavaScript是一种能让你的网页更加生动活泼的程式语言,也是目前网页中设计中最容易学又 ...

  4. javascript基本语法学习(二)

    一.JavaScript函数 1.1.函数的基本概念 在JS里面,可能会定义非常多的相同代码或者功能相似的代码,这些代码可能需要大量重复使用. 虽然for循环语句也能实现一些简单的重复操作,但是比较具 ...

  5. JavaWeb学习 JavaScript语法快速学习

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  6. javascript语言学习

    本课将和大家一起学习简单的js dom 操作,涵盖DOM API以及JQuery的方法. 相关简介 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解 ...

  7. JavaScript学习总结(九)——Javascript面向(基于)对象编程

    转载自  JavaScript学习总结(九)--Javascript面向(基于)对象编程 一.澄清概念 1.JS中"基于对象=面向对象" 2.JS中没有类(Class),但是它取了 ...

  8. JavaScript学习总结(七)——JavaScript函数(function)

    转载自   JavaScript学习总结(七)--JavaScript函数(function) 一.函数基本概念 为完成某一功能的程序指令(语句)的集合,称为函数. 二.JavaScript函数的分类 ...

  9. JavaScript学习总结(一)——JavaScript基础

    转载自   JavaScript学习总结(一)--JavaScript基础 一.JavaScript语言特点 1.1.JavaScript是基于对象和事件驱动的(动态的) 它可以直接对用户或客户输入做 ...

  10. JavaScript 逆向 ( 一 ) --- JavaScript 语法基础

    js 逆向:https://www.cnblogs.com/wuxianyu/category/1940304.html js逆向2:https://www.cnblogs.com/wuxianyu/ ...

最新文章

  1. Android Studio打开项目所有Java文件的import显示红色
  2. 智慧农场基本情况交流会议记录
  3. 数据挖掘之离群点检测
  4. substring、substr以及slice、splice用法和区别
  5. 【MyBatis】MyBatis中,大于号、小于号的两种表达方式
  6. kotlin 第一个程序_Kotlin程序添加两个矩阵
  7. CentOS 6 和 CentOS 7 防火墙的关闭
  8. ROS中阶笔记(八):机器人SLAM与自主导航—机器人自主导航
  9. [EntLib]UAB(Updater Application Block)下载
  10. Python Scrapy爬虫框架详解
  11. kettle点击spoon.bat打不开
  12. html显示当前脚本错误,访问网页总是提示当前网页脚本发生错误怎么办?
  13. python屏蔽警告
  14. Java 输入判断5,7倍数
  15. 假期即将结束,前方道路还很长……CLANNAD,16话,渚就这么香消玉殒了……
  16. 【OpenCV】 - 图像分割之分水岭算法,watershed()函数的输出,对marker和image的改变
  17. 如何关闭FileZilla Server开机自启
  18. 关于MAC下的SSH工具的推荐及SSH如何连接本地的小教程
  19. 亚马逊kindle设置_索尼阅读器和亚马逊Kindle-这次会发生电子书吗?
  20. 旺店通·企业奇门与金蝶云星空对接集成查询采购入库单连通采购入库新增(采购入库单 all)

热门文章

  1. Java中字符串的拼接和转义
  2. 13家公司半年报业绩预喜 分布式将成光伏产业发展方向
  3. 04.SQLServer性能优化之---读写分离数据同步
  4. android的线程安全
  5. #define和inline 的区别
  6. java多线程开发--语法糖之synchronized关键字
  7. [JNI]开发之旅 (3)jni域描述符说明
  8. [2018.11.03 T3] 单调序列
  9. BZOJ4025 二分图
  10. 高德地图上覆盖物polygon方法的使用