| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> JavaScript高级程序设计第三章上 -> 正文阅读 |
|
[JavaScript知识库]JavaScript高级程序设计第三章上 |
# 第一天(chapter3) 我们从第三章开始,因为第一二章语法较少,容易纵容自己懒得写代码的想法,后面补充一二章 ## 语法 ### 1. es区分大小写,同时标识符(变量、函数、属性、函数参数名称)尽量驼峰命名 ### 2. 注释 ?// /**/ ### 3. 严格模式 ``` "use strict"; ``` ? 1严格模式是一种不同的JavaScript解析和执行模型,es3不规范的写法会在这种模式下处理,对于不安全的活动抛出错误。 ? 2它是一个预处理指令。任何支持js的引擎都会切换到严格模式。选择这种语法形式是为了不破坏es3语法 ? 3 整个脚本启用严格模式,在脚本开头加上 ? ``` ? "use strict"; ? ``` ? 4 制定函数在严格模式下执行,在函数体开头书写即可 ? ``` ? ? function doSomething(){ ? ? ? ? "use strict"; ? ? } ? ``` ## 4.推荐句尾加分号 ## 5.变量 1.es变量是松散类型的,var、const、let可以声明变量,var在各个版本都可以使用,const和let只在es6之后 ### var(我们不会讲怎么用,学js或者说看这本书,起码要有c等其他一门语言基础) 1.作用域:函数作用域 ``` ? ? } function test(){ ? ? var t = "hi,js";//局部变量,只在函数内部有效 } function test(){ ? ? t = "hi";//全局变量 ? ? //我们不推荐这种做法 ? ? /* ? ? ? ? 严格模式下,这样给未声明的变量赋值,会导致 ? ? ? ? 抛出ReferenceError ? ? */ } ``` 2.多个变量赋值 ``` ? ? var a = "hi", ? ? ? ? b = 11, ? ? ? ? c = false;//最好空行 ``` 3.var提升(hoist) ``` function foo(){ ? ? console.log(age); ? ? var age = 26; }//不会报错,等价于 function foo(){ ? ? var age; ? ? age = 26; ? ? console.log(age); } ``` hoist,就是把所有变量声明拉倒函数作用域顶部,反复多次用var声明同一个变量也ok
### let let是块作用域,var是函数作用域 ``` if(true){ ? ? let a = 1; ? ? console.log (a);//1 } console.log(a);//referenceError ``` ``` let a; let a;//wrong , 不可以重复声明 ``` 1.暂时性死区 ``` console.log(age); let age;//let不可以提升,所以上面的age没有定义; //在let声明之前的执行瞬间被称为“暂时性死区”,在此阶段引用任何后面才声明的变量都会抛出referenceError ``` 2.全局变量 与var关键字不同,使用let在全局作用域中声明的变量不会成为window对象的属性(var会) ``` var name='i like iu'; console.log(window.name); let name='i like iu'; console.log(window.name);//undifined //let声明仍然在全局作用域发生,相应变量会在页面的生存周期内延续。因此,为避免syntaxerror,必须确保页面不重复声明同一个变量 ``` 3条件声明 对于let,前面声明过的变量不得再次声明,同时没有变量提升 见P27页详细内容 4.for中的let let使得迭代变量局限于for内部:for(let i=0;;) ``` for(var i = 0;i<5;i++){ ? ? setTimeout(()=>console.log(i),0)); ? ? //输出5,5,5,5,5 } for(let i = 0;i<5;++i){ ? ? setTimeout(()=>console.log(i),0)); ? ? //0 1 2 3 4 } var保存退出循环的值,而let声明迭代变量,为每个迭代循环声明一个新的迭代变量,每次引用不同的变量实例(涉及一些后面的知识,之后遇到理解会深刻,这样解释有点浅) ``` ### const const变量需在声明时初始化,并且不可以修改 当然,其限制仅适用于它指向变量的引用,如果其指向对象,修改对象内部属性并不违反const限制 ### 代码风格及最佳实践 1.不用var 2.先使用const,再使用let 只在提前知道未来有改变时使用let,这样可以让浏览器运行时强制保持变量不变
|
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 2:15:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |