首页 > 编程语言 > 详细

1_3 语言基础

时间:2021-05-24 23:03:46      阅读:21      评论:0      收藏:0      [点我收藏+]

 

. 任何语言的核心所描述的:
  都是这门语言在最基本层面上如何工作,
  其中涉及 语法 操作符 数据类型 以及内置功能
  我们都是在此基础上才可以构建复杂的解决方案.

 

一 语法

. 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;
    }

 

1_3 语言基础

原文:https://www.cnblogs.com/fuyunlin/p/14805451.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!