. 任何语言的核心所描述的: 都是这门语言在最基本层面上如何工作, 其中涉及 语法 操作符 数据类型 以及内置功能 我们都是在此基础上才可以构建复杂的解决方案.
一 语法
. ECMAScript 的语法是宽松的
1)区分大小写
. ECMAScript中一切都是区分大小写 无论 变量 函数 还是 操作符.
var test 和 var Test 是完全不同的两个变量
typeof 不能做为函数名 因为它是一个关键字 但 Typeof 是一个完全有效的函数名
2)标识符
. 标识符就是 [变量 函数 属性 或 函数参数] 的名称。
. 命名规则
1 第一个字符:必须是 字母 下划线(_) 或美元符号 ($)
2 剩下的字符:可以是 字母 下划线 美元符号 或 数字
3 采用小驼峰命名 userName getCateNameById
. 关键字 保留字 true false null 不能作为标识符.
3)注释:
. 采用C语言风格的注释
. 单行注释 双斜杆 //
. 多行注释 斜杆星号开头 星号斜杆结尾 /* */
4)严格模式
概念
. ECMAScript5中 新增了严格模式的概念(strict) [ strict 单词严格的意思 ]
. 严格模式是一种不同的JavaScript解析和执行模型
ECMAScript3中一些不规范的写法在这种模式会被处理 对于不安全的活动将会抛出错误.
如何使用
//1. 整个脚本使用严格模式 在脚本开头加上: "use strict" //2. 某个函数使用严格模式 在函数体开头加上: "use strict"
虽然看起来像一个没有赋值给任何变量的字符串,但它是一个预处理指令。
任何支持的JavaScript引擎看到它都会切换到严格模式.
选择这种语法形式主要的目的是不破坏ECMAScript3的语法
5)语句
加分号
. ECMAScript中的语句以分号结束。
. 省略分号意味着由 解析器确定语句在哪里结尾.
. 即时语句末尾的分号不是必须的 也应该加上.
------------------------------------------------
加分号的好处
1. 有助于防止省略造成的问题 比如可以避免输入内容不完整.
2. 便于开发者通过删除空格来压缩代码 [ 如果没有结尾的分号 只删除空格 则会导致语法错误 ]
3. 有助于在某些情况下提升性能 因为解析器会尝试在合适的位置补上分号以纠正语法错误.
代码块
. 多条语句可以合并到一个C语言分格的代码块中.
. 代码块由一个左花括号标识开始 一个右花括号标识结束 {}
. if之类的控制语句只在执行多条语句时要求必须有代码块.
. 不过最佳实践是:始终在控制语句中使用代码块 即使要执行的只有一条语句
. 控制语句中使用代码块可以让内容更清晰 在需要修改代码时可以减少出错的可能性.
二 保留字与关键字
. 这节没有什么好讲的
三 变量
. ECMAScript的变量是松散类型的 意思是变量可以保存任何类型的数据.
. 每个变量只不过是一个用于保存任意值的命名占位符
. 有三个关键字可以什么变量 var const let
. var 在ECMAScript所有版本中都可以使用 而 [const 和 let] 只能在ECMAScr6及更晚的版本中使用
1)var关键字
. var message; 它可以保存任何类型的值 var是关键字 message是变量名 [标识符]
. 不初始化的情况下 变量会保存一个特殊值 undefined
. 初始化:指的是给变量赋一个值
作用域 [ 重点 ]
//1 . 在函数内部用var定义的变量 是局部作用域 在函数执行完成后会销毁 function test() { var message = ‘hi‘;//message是一个局部变量 } test(); console.log(message);//报错了 message is not defined
---------------------------------------------------------------
//2 . 在函数内部定义变量时 省略var操作符 可以创建一个全局变量 function test() { message = ‘hi‘;//省略var关键字 message是一个全局变量 } test(); console.log(message);//打印出了 hi
----------------------------------------------------------------
虽然可以通过省略var操作符定义全局变量 但不推荐这样做.
在局部作用域中定义全局变量很难维护 也会造成困惑.
因为 不能一下子断定省略var是不是有意为之.
在严格模式下 像这样给未申明的变量赋值 则会抛出 ReferenceError
变量提升 [ 重点 ]
function fun() { console.log(age); var age = 100; } fun();//返回 undefined 并没有报错 //这是因为用var声明的变量会 自动提升到 函数作用域的顶部 // ECMAScript运行时 把它看成等价的如下代码 function fun() { var age; console.log(age);//此时age没有赋值 所以打印undefined age = 100; }
原文:https://www.cnblogs.com/fuyunlin/p/14805451.html