js包括:语法、语句、类型、关键字、保留字、操作符和对象。

语法、关键字、保留字

1.js中一切区分大小写,包括变量、函数名、操作符;

2.标识符规则,第一个字符必须是字母、下划线_、或者美元符号,其它的字符则可以或者只能是字母、美元符号、或者数字组成,并推荐采用驼峰式命名,如goodBoy;

3.语句,所有语句以一个分号结尾,虽然不是必需的,但是为了防止在压缩js代码时因为缺少分号导致语句之间连接出错,同时也为了能省去解析器分析插入分号的时间。在条件控制语句中代码块用花括号{},即使只有一条语句也不应省略,虽然这样不会报错,主要是为了编码清晰;

4.保留字和关键字,关键字指的是js中已经定义的有特殊用途的字段,比如,return、var等等,而保留字就是未来可能会成为关键字的字段,比如ES3中的class、super等保留字已经成为ES6中的关键字。

5.变量,ES中的变量属于泛类型,即可以保存任何类型的数据。定义变量:

  1. var hello;//第一种
  2. var hello = "Hi!";//第二种
  3. hello = "Hi";//第三种
  4. function fn() {
  5.     var hello = "Hi";//第四种
  6.     hello = "Hi";//第五种
  7. }

第一种,变量定义了但是没有初始化,此方法可取;

第二种,定义并初始化,此方法可取;

第三种,是全局变量的定义方式,此方法不可取;

第四种,局部变量,在函数外无法直接获取,并且在函数退出后会自动销毁,此方法可取;

第五种,跟第三种其实是一样的,只要函数fn被调用一次,那么全局变量hello在任何地方都能直接获取,并且只有退出当前页面或者手动赋空时才会销毁,此方法不可取;

第六种,用逗号隔开,一次性定义多个变量并初始化,此方法可取。

数据类型

ES中有5种基本数据类型,Undefined、Null、Boolean、Number和String。

使用typeof操作符检测变量数据类型可以返回下列值:

"undefined"——值未定义,两种情况,第一种,变量未声明,第二种,变量声明但未初始化,如“var a;”。由于即使时未初始化的变量也会自动赋予undefined,因此,为了区分变量是否已经声明,我们在实际编码的时候应该将变量显式的初始化。这样当我们拿到undefined值时就能识别变量尚未声明。

"boolean"——布尔值,有两个值,true和false,流程控制语句比如if会自动将括号内的数据转换成Boolean类型,具体的转换规则如下表:

数据类型

true false
Boolean true false
String 非空字符 ""空字符串
Number 非零数字包括无穷大 0和NaN
Object 任何非null对象 null
Undefined N/A undefined

"string"——字符串,由0或多个16位Unicode字符组成的字符序列,可以用单引号跟双引号表示。\x41 (十六进制)表示"A",\u03a3(Unicode)也是表示一个字符,反斜杠还可用于转义字符,表示非打印字符。将其他类型数据转换成字符串的方法toString():

  1. true.toString(); //'true',布尔类型转为字符串
  2. var a=10; a.toString(); //'10', 整数转字符串
  3. a.toString(2);//'1010',括号里面的值指的是以二进制方式转换,也可以是八进制跟16进制,不传值默认是十进制
  4. //toString()函数不能把null跟undefined类型转字符串,但是可以用String()函数
  5. String(null);//'null'
  6. String(undefined);//'undefined'
  7. //除了上面的两个显示转换成字符串的方法,还有就是加号可以隐式的将其它类型值转为字符串,比如:
  8. null+'' ;//结果是'null'
  9. 10+''//结果是'10'

"number"——数值,十进制、八进制、十六进制,八进制第一位为0然后接着数字(0-7),超过范围则前面的0被忽略转成十进制,十六进制时0x开头。当进行算数运算时都会被转成十进制值。浮点数值示例如下:

  1. var float1 = 1.1
  2. var float2 = 1.0//解析为1
  3. var float3 = .1//不推荐
  4. var float4 = 1.//直接解析为1
  5. var float5 = 1.125e7//实际含义为1.125乘以10的7次方
  6. var float6 = 1.125e-7//实际含义为1.125乘以10的-7次方
  7.  
  8. //不要用以下的判断,浮点数会产生舍入误差的问题
  9. if(a+b == 0.3) {
  10. }

NaN是一个非数值,在ES中,这个数值表示一个预期返回数值的操作未返回的情况。实际上,整数跟字符串的减法乘法除法会得出NaN,加法除外。NaN跟任何值都不相等包括NaN本身,

  1. NaN == NaN //false
  2. //ES中定义了isNaN函数用来检测是否不是数值
  3. isNaN(NaN);//true
  4. isNaN(10);//false
  5. isNaN('10');//false ,可以被转换成10
  6. isNaN("blue");//true
  7. isNaN(true);//false,可以被转换成1

数值转换函数,Number、parseInt、parseFloat,第一个可用于任何数据类型,后面两个专门将字符串转换成数值

  1. var num1 = Number(true);//1,如果false则转换成0
  2. var num3 = Number(null);//返回0
  3. var num4 = Number(undefined);//返回NaN
  4. var num6 = Number(0011);//11,前面0被忽略
  5. var num2 = Number(99);//正常返回99
  6. var num7 = Number(1.1);//1.1,浮点数返回原值
  7. var num8 = Number(0x11);//17, 16进制的转换为十进制
  8. var num5 = Number(" ");//空字符串转成0
  9. var num9 = Number('sd');//像字符串就会转成NaN
  10.  
  11. 其实在实际开发过程中,用的比较多的是parseInt
  12. parseInt('123int'); //123,忽略第一个遇到的字符串后面所有
  13. parseInt(' '); //NaN,同时任何非数字开头的字符串都为NaN
  14. parseInt(0xa); //
  15. parseInt(0.6); //0,取整
  16. parseInt(070); //56或者70,在ES3中被当做8进制,ES5中是70,所以我们在使用时建议加上parseInt(070,10);
  17. parseInt('50'); //
  18. parseInt('123int'); //
  19.  
  20. parseFloat('123aa');//
  21. parseFloat('0xa');//0,注意这里跟上面的两个都不一样
  22. parseFloat('1.2');//1.2
  23. parseFloat('09.5.5');//9.5
  24. parseFloat('3.2e2');//

"object"——对象或null,null数据类型表示的是一个空对象指针,所以这是一个对象。当我们在声明一个对象变量时最好将之初始化为null,这样后续我们便可以通过变量不为null来判断变量赋值成功。ES中规定undefined== null为true,所以在开发的时候需要注意考虑到这种情况。同时,在使用时,也要区分开其跟DOM等对象的不同。

JavaScript03-基本概念一的更多相关文章

  1. 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念

    一.前言     DDD(领域驱动设计)的一些介绍网上资料很多,这里就不继续描述了.自己使用领域驱动设计摸滚打爬也有2年多的时间,出于对知识的总结和分享,也是对自我理解的一个公开检验,介于博客园这个平 ...

  2. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  3. 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)

    集群概念介绍(一)) 白宁超 2015年7月16日 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习 ...

  4. 声音分贝的概念,dBSPL.dBm,dBu,dBV,dBFS

    需要做个音频的PPM表,看着一堆的音频术语真是懵了,苦苦在网上扒了几天的文档,终于有了点收获,下面关于声音的分贝做个总结. 分贝 Decibel 分贝(dB)是一个对数单位(logarithmic u ...

  5. js面向对象学习 - 对象概念及创建对象

    原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...

  6. 【Linux大系】Linux的概念与体系

    感谢原作者:Vamei 出处:http://www.cnblogs.com/vamei 我在这一系列文章中阐述Linux的基 本概念.Linux操作系统继承自UNIX.一个操作系统是一套控制和使用计算 ...

  7. KOTLIN开发语言文档(官方文档) -- 2.基本概念

    网页链接:https://kotlinlang.org/docs/reference/basic-types.html 2.   基本概念 2.1.  基本类型 从可以在任何变量处理调用成员函数和属性 ...

  8. .NET面试题系列[5] - 垃圾回收:概念与策略

    面试出现频率:经常出现,但通常不会问的十分深入.通常来说,看完我这篇文章就足够应付面试了.面试时主要考察垃圾回收的基本概念,标记-压缩算法,以及对于微软的垃圾回收模板的理解.知道什么时候需要继承IDi ...

  9. 《徐徐道来话Java》(1):泛型的基本概念

    泛型是一种编程范式(Programming Paradigm),是为了效率和重用性产生的.由Alexander Stepanov(C++标准库主要设计师)和David Musser(伦斯勒理工学院CS ...

  10. 简述linux同步与异步、阻塞与非阻塞概念以及五种IO模型

    1.概念剖析 相信很多从事linux后台开发工作的都接触过同步&异步.阻塞&非阻塞这样的概念,也相信都曾经产生过误解,比如认为同步就是阻塞.异步就是非阻塞,下面我们先剖析下这几个概念分 ...

随机推荐

  1. CF1065F Up and Down the Tree

    题解: 和正解方法不太一样 正解的大概意思就是先向下走可以走回来的 再走不能走回来的 能走回来的就是到这个儿子后最近的叶子可以返回的 然后这样可以O(n)计算 我自己做的时候以为这样不太能做.. 所以 ...

  2. keras安装-【老鱼学keras】

    为何要用keras? 两个字:简单. Keras让深度学习像搭建积木一样方便地来进行,使前面的tensorflow能够更加方便地使用. 虽然还有其它更多的理由,比如:Keras 支持多个后端引擎,不会 ...

  3. 树莓派B+使用入门&RPI库安装&wringPi库安装

    最近看看试用一下树莓派进行一些开发操作,于是入手一块Raspberry Pi B+的板子来玩.由于没有显示器,没有备用的键盘和鼠标,所以想到用SSH来控制树莓派,刚开始还很担心已经安装好的操作系统到底 ...

  4. linux学习--2019-04-22

    1.写命令,vi编辑器 1)vi 文件名 2) 按 ‘i’ 进入编辑模式 3)编写完成后,按Esc,然后输入 “:wq” 推出编辑.(“q!”不存盘,强制退出vi) 2.命令补全 “Tab” 3.获取 ...

  5. 简单使用WebSocket实现聊天室

    环境需求:flask,websocket第三方包 目录结构 web中实现群聊 ws_群聊.py文件 # 实现一个websocket 先下载包 gevent-websocket from flask i ...

  6. tensorflow 使用 2 Felch ,Feed

    Felch ::在会话里可以执行多个 op , import tensorflow as tf input1 = tf.constant(3.0) input2 = tf.constant(2.0) ...

  7. python可视化库 Matplotlib 00 画制简单图像

    1.下载方式:直接下载Andaconda,简单快捷,减少准备环境的时间 2.图像 3.代码:可直接运行(有详细注释) # -*- encoding:utf-8 -*- # Copyright (c) ...

  8. [POJ1964]City Game (悬线法)

    题意 其实就是BZOJ3039 不过没权限号(粗鄙之语) 同时也是洛谷4147 就是求最大子矩阵然后*3 思路 悬线法 有个博客讲的不错https://blog.csdn.net/u012288458 ...

  9. Spring Cloud下微服务权限方案

    背景从传统的单体应用转型Spring Cloud的朋友都在问我,Spring Cloud下的微服务权限怎么管?怎么设计比较合理?从大层面讲叫服务权限,往小处拆分,分别为三块:用户认证.用户权限.服务校 ...

  10. 调用获取学生信息的接口,保存到excel里面

    # 2.http: // doc.nnzhp.cn / index.php?s = / 6 & page_id = 14# 调用获取学生信息的接口,保存到excel里面 import requ ...