javascript概念
是什么
js是一种运行在客户端(浏览器)的编程语言,实现人机交互效果。
做什么
- 网页特效
- 表单验证
- 网页交互
- 服务端编程
组成
1:js基础 ECMAScirpt
2:web api: 分为dom(页面标签) bom(操作浏览器)
js引入方法
内联例如 :
<a onclick='console.lod(123)'></a>
内部
外部 单独js文件
js注释
单行 ctrl+/
多行shift+alt+a
结束符
分号;代表一行结束,可加可不加,工作中,工具统一格式化
输入输出
输出
document.write
alert()
console.log
输入
prompt()弹出一个对话框,获取用户输入,用变量接住输出
变量
变量是什么?
变量是程序在内存中申请的一份存储数据的空间
变量声明的三种方式
var,let ,const(常量)
JavaScript 是弱类型语言,可以不需要声明变量而直接使用。这样虽然简单但不易发现变量名方面的错误,所以不建议这样做。通常的做法是在使用 JavaScript 变量前先声明变量。目前,JavaScript 变量声明方式有 3 种,分别是使用 var、let 和 const 关键字声明。
其中,使用 var 声明变量,是 ECMAScript6 版本以前一直使用的方式,由于这种方式声明的变量在某些情况下会导致一些问题,因而在 ECMAScript6 版本中增加了使用 let 和 const 两种方式声明变量。
JavaScript 采用弱数据类型的形式,因而 JavaScript 变量是一种自由变量。它在程序的运行过程中可以接受任何类型的数据,不管使用哪种方式声明,在声明时都无需指定数据类型,这一点和强类型的 Java 等语言的变量声明需要指定变量的数据类型存在很大的不同。
变量使用注意点
声明多个变量可用逗号分隔例如 let a=1,b=2.变量申明可以不赋值,其默认值为undefined,不建议不声明直接使用,变量数据类型根据所附的值决定
var特点:可声明全局和局部变量,可声明重复的变量,后面的覆盖前面的。没有块级作用域。有变量提升。
**let特点:**有块级作用域,不可以重复声明
**const常量特点:**声明必须赋初始值,不可以修改变量的值,但是如果是修改复杂数据类型里面的值不算做修改此常量。变量也不可以多次声明,也有块级作用域
三种区别:
-
变量初始化要求不同:var 和 let 声明变量时可以不需要初始化,没有初始化的变量的值为“undefined”,在代码的运行过程中变量的值可以被修改。const 声明变量时必须初始化,并且在代码的整个运行过程中不能修改初始化值,否则运行时会报错
-
变量提升的支持不同:var 声明支持变量提升,而 const 和 let 声明不支持变量提升。
-
对块级作用域的支持不同:var 声明的变量,不支持块级作用域,let 和 const 声明的变量支持块级作用域。凡是使用一对花括号
{}括起来的代码都称为一个代码块。所谓块级作用域,指的是有效范围为某个代码块,离开了这个代码块,变量将失效 -
重复声明:在同一个作用域中,var 可以重复声明同一个变量,let 和 const 不能重复声明同一个变量。
-
let 和 const 存在暂时性死区:当块中存在 let/const 声明语句时,let/const 声明的变量就绑定到这个当前块作用域,不会受外部变量的影响,也不会影响外部变量。这个特点导致了在块作用域中,块变量在块开始到块变量声明之间出现了一个称为“暂时性死区”的区域。在“暂时性死区”中使用块变量,将会导致 ReferenceError
暂时性死区知识链接[(www.php.cn/js-tutorial…]
补充说明:块级作用域,在块级作用域内的变量,无法被外部所访问。防止变量污染
变量提升:js在执行代码的时候使用var申明的变量将被提升在最前面
变量命名规范:
不能用数字开头,变量名由字母,数字,下划线,$符号组成,不要使用关键字,区分大小写。
规范:使用驼峰命名法:例如myName每个单词首字母大写。
语义化。使变量名能看懂
数据类型:基本,引用
基本数据类型
基础数据类型分为:数字,字符,布尔,null,undefined。
引用数据类型:function函数,array数组,obeject对象。
数字型
小数,整数,负数都是数字型
字符串型
带引号都是字符串
字符串拼接使用+
**模板字符串:简化拼接字符串,可以创建多行文本,标记``**变量替换${变量}
document.write可以把一个标签形式的字符串插入body
写字符串标签的时候如果换行只能使用反引号,没有换行使用哪种都可以
例如document.write(<h1>123</h1>)
布尔:true,false
null表示空
undefind表示未定义
null和undefined
null == 0
//false
null == ""
//false
null == false
//false
undefined == 0
//false
undefined == ""
//false
undefined == false
//false
undefined == null //注意!注意!注意!
//true
undefined === null //注意!注意!注意!
//false
数据类型检测
typeof()
数据类型转换
字符串转换为数字
隐式转换
除+号以外,-*/在运算的时候都会把字符型的数字转为数字型
工作中比较常用的写法:
let a=“1”,a=a-0,或者 a=+a
显示转换
Number()
parseInt()转换为整数
parsnfloat()转换为带小数的
补充:1:一个小数保留几位小数直接调用toFixed()方法 (四舍五入)
2:非数字使用这些方法转换为NaN
数字转换为字符串
隐式转换
let a=1
a=1+’‘
通过字符串拼接隐式转换
显示转换
let a=1
string(a)
a.tostring()