JavaScript的语法

JavaScript语法

语法

1.严格区分大小写
2.标识符
标识符:在JS中所有的可以由我们自主命名的都可以称之为标识符。

例如:变量名、函数名、属性名都是属于标识符。
1.建议用驼峰命名规则:getElementById/matherAndFather/aaaOrBbbAndCcc

2.变量命名必须以字母或是下标符号”_”或者”$”为开头

3.注释

(1)html的注释:

<!-- 注释  -->
(2)CSS的注释:

<style type="text/css">
​
    /*
        注释
    */
​
    p{
            
    }
​
</style>
注意:CSS只有/*  */这种注释,没有//这种注释。而且注释要写在<style>标签里面才算生效哦。

(3)JavaScript的注释:

单行注释:

// 我是注释
多行注释:

/*
    多行注释1
    多行注释2
*/
备注:常用的编辑器中,单行注释的快捷键是ctrl+/,多行注释的快捷键是ctrl+shift+/。

4.JavaScript对换行、缩进、空格不敏感。每一条语句以分号结尾。
备注:每一条语句末尾要加上分号,虽然分号不是必须加的,如果不写分号,浏览器会自动添加,但是会消耗一些系统资源。

5.所有的符号,都是英语的。比如括号、引号、分号。

变量

有 3 个关键字可以声明变量:var、const 和 let。其中,var 在 ECMAScript 的所有版本中都可以使用,而 const 和 let 只能在 ECMAScript 6 及更晚的版本中使用。

var关键字

要定义变量,可以使用 var 操作符(注意 var 是一个关键字),后跟变量名(即标识符,如前所述):
var message;

  1. var 声明作用域
    使用 var 操作符定义的变量会成为包含它的函数的局部变量。比如,使用 var 在一个函数内部定义一个变量,就意味着该变量将在函数退出时被销毁:
    function test() {
    var message = “hi”; // 局部变量
    }
    test();
    console.log(message); // 出错!
    全局变量:
    function test() {
    message = “hi”; // 全局变量 }
    test();
    console.log(message); // “hi”
    去掉之前的 var 操作符之后,message 就变成了全局变量。只要调用一次函数 test(),就会定义 这个变量,并且可以在函数外部访问到。

var 声明提升

JavaScript在解释执行之前,有预编译的过程,会将变量声明提升到最前面,但是不会将赋值提升.
3.3.2 let声明

let 跟 var 的作用差不多,但有着非常重要的区别。最明显的区别是,let 声明的范围是块作用域, 而 var 声明的范围是函数作用域

. 暂时性死区
let 与 var 的另一个重要的区别,就是 let 声明的变量不会在作用域中被提升。
在 let 声明之前的执行瞬间被称为“暂时性死区”(temporal dead zone),在此 阶段引用任何后面才声明的变量都会抛出 ReferenceError。

const声明

const 的行为与 let 基本相同,唯一一个重要的区别是用它声明变量时必须同时初始化变量,且 尝试修改 const 声明的变量会导致运行时错误。
const age = 26;
age = 36; // TypeError: 给常量赋值
29
// const 也不允许重复声明
const name = ‘Matt’;
const name = ‘Nicholas’; // SyntaxError
// const 声明的作用域也是块 const name = ‘Matt’;
if (true) {
const name = ‘Nicholas’;
}
console.log(name); // Matt

数据类型

在JS中一共有六种数据类型:

基本数据类型(值类型):String 字符串、Number 数值、Boolean 布尔值、Null 空值、Undefined 未定义,symbol 符号
引用数据类型(引用类型):Object 对象
注意:内置对象function、Array、Date、RegExp、Error等都是属于Object类型。也就是说,除了那五种基本数据类型之外,其他的,都称之为 Object类型。

引用数据类型有几种?
只有一种,即 Object 类型

typeof()表示“获取变量的类型”,返回的是小写
使用 typeof 操作符的例子:
let message = “some string”;
console.log(typeof message);
console.log(typeof(message));
console.log(typeof 95);
// “string”
// “string”
// “number”
调用 typeof null 返回的是"object"。这是因为特殊值 null 被认为是一个对空对象的引用。

undefind

undefined:未定义
声明了一个变量,但是没有赋值(例如:var a;),此时它的值就是undefined。
注意,包含 undefined 值的变量跟未定义变量是有区别的。请看下面的例子: let message; // 这个变量被声明了,只是值为undefined
// 确保没有声明过这个变量
// let age
console.log(message);
// “undefined” console.log(age); // 报错
在对未初始化的变量调用 typeof 时,返回的结果是"undefined",但对未声明的变量调用它时, 返回的结果还是"undefined",这就有点让人看不懂了。比如下面的例子:
let message; // 这个变量被声明了,只是值为undefined // 确保没有声明过这个变量
// let age
console.log(typeof message); // “undefined”
console.log(typeof age); // “undefined”

Undefined类型的值只有一个,就是undefind
使用 type of 检查一个undefined时,会返回undefined。
null和undefined有最大的相似性。看看null == undefined的结果(true)也就更加能说明这点。

但是null === undefined的结果(false)。它们虽然相似,但还是有区别的,其中一个区别是:和数字运算时,10 + null结果为:10;10 + undefined结果为:NaN。

任何数据类型和undefined运算都是NaN;
任何值和null运算,null可看做0运算

null

null:空值
专门用来表示一个为空的对象(例如:var a = null)。注意,专门用来表示空对象。

Null类型的值只有一个,就是null。比如:var a = null。
使用 typeof 检查一个null值时,会返回object。

布尔值:Boolean

true 和 false。主要用来做逻辑判断。

布尔值直接使用就可以了,千万不要加上引号。

代码:

var a = true;
console.log(typeof a);

控制台输出结果:

boolean
数值型:Number

在JS中所有的数值都是Number类型,包括整数和浮点数(小数)。

var a = 100;    //定义了一个变量a,并且赋值100
console.log(typeof a);  //输出a变量的类型

上方代码的输出结果为:

number

由于内存的限制,ECMAScript 并不能保存世界上所有的数值。

最大值:Number.MAX_VALUE,这个值为: 1.7976931348623157e+308
最小值:Number.MIN_VALUE,这个值为: 5e-324
如果使用Number表示的变量超过了最大值,则会返回Infinity。

无穷大(正无穷):Infinity
无穷小(负无穷):-Infinity
注意:typeof Infinity的返回结果是number。

NaN和isNaN()函数:

(1)NaN:是一个特殊的数字,表示Not a Number,非数值。比如:

console.log("abc" / 18);  //结果是NaN


console.log(“abc” * “abcd”); //按理说,字符串相乘是没有结果的,但如果你非要让JS去算,它就一定会给你一个结果。结果是NaN
注意:typeof NaN的返回结果是number。

Undefined和任何数值计算的结果为NaN。NaN 与任何值都不相等,包括 NaN 本身。

(2)**isNaN() :任何不能被转换为数值的值,都会让这个函数返回 true。**注意:这里是会对内容进行类型转换!

isNaN(NaN);// true
isNaN("blue"); // true
isNaN(123); // false


浮点数的运算:

在JS中,整数的运算基本可以保证精确;但是小数的运算,可能会得到一个不精确的结果。所以,千万不要使用JS进行对精确度要求比较高的运算。

如下:

var a = 0.1 + 0.2;
console.log(a);  //打印结果:0.30000000000000004

上方代码中,打印结果并不是0.3,而是0.30000000000000004。运算都要转换成二进制去计算,然而,二进制是无法精确表示1/10的。因此存在小数的计算不精确的问题。

连字符和加号的区别
键盘上的+可能是连字符,也可能是数字的加号。如下:

console.log("我" + "爱" + "你");   //连字符,把三个独立的汉字,连接在一起了
console.log("我+爱+你");           //原样输出
console.log(1+2+3);             //输出6

输出:

我爱你
我+爱+你
6
总结:如果加号两边都是数值,此时是加。否则,就是连字符(用来连接字符串)。

举例1:

var a = "1";
var b = 2;
console.log(a + b);

控制台输出:

12

举例2:

var a = 1;
var b = 2;
console.log("a" + b);   //"a"就不是变量了!所以就是"a"+2 输出a2


控制台输出:

a2

在变量中加入字符串进行拼接,可以被同化为字符串。【重要】

String 字符串

来看个示例。现有如下代码:

var a = "abcde";
var b = "生命壹号";
var c = "123123";
var d = "哈哈哈哈哈";
var e = "";     //空字符串


console.log(typeof a);
console.log(typeof b);
console.log(typeof c);
console.log(typeof d);
console.log(typeof e);
控制台输出如下:

string
string
string
string
string

注意事项:

(1)在JS中,字符串需要使用引号引起来。使用双引号或单引号都可以,但是不要混着用。比如下面这样写是不可以的:

var str = `hello";

(2)引号不能嵌套:双引号里不能再放双引号,单引号里不能再放单引号。但是单引号里可以嵌套双引号。

(3)转义字符:在字符串中我们可以使用\作为转义字符,当表示一些特殊符号时可以使用\进行转义。

" 表示 "
’ 表示 ’
\n 表示换行
\r 表示回车
\t 表示制表符
\b 表示空格
\ 表示
举例:

var str1 = "我说:\"今天\t天气真不错!\"";
var str2 = "\\\\\\";


console.log(str1);
console.log(str2);
上方代码的打印结果:

我说:"今天  天气真不错!"
\\\

将其他数值转换为字符串有三种方式:

拼串,toString(),String()

Symbol类型

Symbol(符号)是 ECMAScript 6 新增的数据类型。符号是原始值,且符号实例是唯一、不可变的。 符号的用途是确保对象属性使用唯一标识符,不会发生属性冲突的危险。

  1. 符号的基本用法
    符号需要使用 Symbol()函数初始化。
    let sym = Symbol();
    console.log(typeof sym); // symbol
Object类型

对象通过 new 操作符后跟对象类型的名称 来创建。
let o = new Object();

let o = new Object; // 合法,但不推荐
ECMAScript 中的 Object 也是派生其他对象的基类。Object 类型的所有属性和方法在派生 的对象上同样存在。
每个 Object 实例都有如下属性和方法。
constructor:用于创建当前对象的函数。
 hasOwnProperty(propertyName):用于判断当前对象实例(不是原型)上是否存在给定的属

 isPrototypeOf(object):用于判断当前对象是否为另一个对象的原型。
 propertyIsEnumerable(propertyName):用于判断给定的属性是否可以使用
 toLocaleString():返回对象的字符串表示,该字符串反映对象所在的本地化执行环境。
 toString():返回对象的字符串表示。
 valueOf():返回对象对应的字符串、数值或布尔值表示。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值