js基础语法

注释

和C、Java一样

//单行注释

/*注释和*/多行注释,也可以用在语句中

str = 'hello' + /*comment*/' test'
console.log(str)

常量和变量

标识符

标识符必须是字母、下划线、美元符号$和数字,但必须是字母、下划线、美元符号开头,依然是不能数

字开头就行。

标识符区分大小写

声明

  • var声明一个变量
  • let声明一个块作用域中的局部变量(推荐)
  • const声明一个常量

JS中的变量声明和初始化是可以分开的

var a //只是声明,a 为undefined
let b
console.log(1,a,b);

a = 1
b = 'a string'
console.log(2,a,b);

const c = 100 // 常量必须声明时赋值,之后不能再改
console.log(c)
var y //只是声明,y值为undefined
var x = 5 // 规范的声明并初始化,声明全局或局部变量。
z = 6 // 不规范的初始化,不推荐。在严格模式下会产生异常。在赋值之前不能引用,因为它没有声明。一旦这样赋值就是全局作用域。
//变量提升
console.log(a);//此时a 为undefined
var a 
a = 5

//let 不会使变量提升
console.log(b)
let b 
b = 2

数据类型

序号名称说明
1number数值型,包括整型和浮点型
2boolean布尔型,true和false
3string字符串
4null只有一个值null
5undefined变量声明未赋值的;对象未定义的属性
6symbolES6 新引入类型
7object类型是以上基本类型的复合类型,是容器

ES是动态语言,弱类型语言。

虽然先声明了变量,但是变量可以重新赋值为任何类型。

//类型转换
//弱类型 任何东西和字符串相加都是字符串
console.log("======string======")
console.log(a = 3 + 'wwww',typeof a)
console.log(a = 3 + 'wwww', typeof(a))
console.log(a = null + 'wwww', typeof(a))
console.log(a = undefined + 'wwww', typeof(a))
console.log(a = true + 'wwww', typeof(a))


//数字
console.log('=======number=======')
console.log(a = null + 8,typeof a) //8
console.log(a = undefined + 8,typeof a)//NaN number /undefined没法转换成一个对应的数字
console.log(a = true + 8, typeof(a)) //true 看作1 返回9
console.log(a = false + 8, typeof(a)) //false看作0 返回8


// boolean
console.log('=====bool=====')
console.log(a = null + true, typeof(a)) //1
console.log(a = null + false, typeof(a)) //0
console.log(a = undefined + true, typeof(a)) //undefined没法转换成一个对应的数字
console.log(a = undefined + false, typeof(a)) // NaN
console.log(a = null & true, typeof(a)) //0
console.log(a = undefined & true, typeof(a)) //0


//短路
console.log(a = null && true, typeof(a)) // 逻辑运算符,null 直接就是false短路
console.log(a = false && null, typeof(a)) // 逻辑运算符,false短路返回false
console.log(a = false && 'www', typeof(a)) // boolean
console.log(a = true && 'www', typeof(a)) // 字符串
console.log(a = true && '' && 'abc', typeof(a)) // 字符串


// 短路补充
console.log(a = [] && 'abc', typeof(a)) //返回abc
console.log(a = {} && 'abc', typeof(a)) //返回abc

NaN,即Not a Number,转换数字失败。它和任何值都不等,和自己也不等,只能使Number.isNaN(NaN)判断。

总结

遇到字符串,加号就是拼接字符串,所有非字符串隐式转换为字符串。

如果没有字符串,加号把其他所有类型都当数字处理,非数字类型隐式转换为数字。undefined特殊,因为它都没有定义值,所以转换数字失败得到一个特殊值NaN。

如果运算符是逻辑运算符,短路符,返回就是短路时的类型。没有隐式转换。

字符串

将一个值使用’ 单引号或者 " 双引号 引用起来就是字符串。

ES6提供了反引号定义一个字符串,可以支持多行,还支持插值。

let a = 'abc'
let b = "135"
let c = `line1
    line2
  line3
` // 支持多行
console.log(c)
// 字符串插值,要求在反引号字符串中。python3.6支持
let name="tom", age = 19
console.log(`Hi, my name is ${name}. I am ${age}`)

字符串操作方法

let str = 'abcdef'
console.log(str.length)
console.log(str.charAt(2)) //g
console.log(str[2]); //g
console.log(str.toUpperCase()); // 返回大写 ABCDEF
console.log(str.concat('.com')); //连接
console.log(str.slice(3)); //切片 def
console.log(str.slice(3,5))
console.log(str.slice(-2, -1))
console.log(str.slice(-2))


let str = 'abcdef'
console.log(str.length)
console.log(str.charAt(2)) //g
console.log(str[2]); //g
console.log(str.toUpperCase()); // 返回大写 ABCDEF
console.log(str.concat('.com')); //连接
console.log(str.slice(3)); //切片 def
console.log(str.slice(3,5))
console.log(str.slice(-2, -1))
console.log(str.slice(-2))

let url = "www.baidu.com"
console.log(url.split('.'))
console.log(url.substr(7,2)) // 返回子串从何处开始,取多长
console.log(url.substring(7,10)) // 返回子串,从何处开始,到什么为止
let s = 'baidu.net'

console.log(s.replace('.', '.com'))

数值型number

在JS中,数据均为双精度浮点型范围只能在 -(2^53 -1) 和 2^53 -1之间,整型也不例外。

数字类型还有三种符号值:+Infinity(正无穷)、-Infinity(负无穷)和 NaN (not-a-number非数字)。

数字的常用方法

方法描述
Number.parseFloat()把字符串参数解析成浮点数,和全局方法 parseFloat() 作用一致
Number.parseInt()把字符串解析成特定基数对应的整型数字,和全局方法 parseInt() 作用一致
Number.isFinite()判断传递的值是否为有限数字
Number.isInteger()判断传递的值是否为整数
Number.isNaN()判断传递的值是否为 NaN。Nan唯一判断方式
//parseInt()
let a = '1.1'
let b = 2.6
let c = 'c'
console.log(Number.parseInt(a)); 1
console.log(Number.parseInt(b)); 2
console.log(Number.parseInt(c)); NaN
let a = '1.1'
let b = 2.6
let c = 'c'
console.log(Number.parseFloat(a));	1.1
console.log(Number.parseFloat(b));	2
console.log(Number.parseFloat(c));	NaN

内置数学对象Math

Math提供了绝对值、对数指数运算、三角函数运算、最大值、最小值、随机数、开方等运算函数,提供了PI值。

console.log(Math.PI)
console.log(Math.abs(-1)) //绝对值
console.log(Math.log2(16)) //对数运算
console.log(Math.sqrt(4)) //开方
console.log(Math.pow(2, 3)) //幂运算
console.log(Math.random()) // (0, 1)之间的随机数

运算符

算数运算符

+ - * / %等运算符和Python一样

console.log(1/2)    // 0.5自然除
console.log(1/0)    //返回无穷大
console.log(5 % 3)  //取余
console.log(2 ** 3) //幂运算


//parseInt()
// let a = '1.1'
// let b = 2.6
// let c = 'c'
// console.log(Number.parseInt(a));
// console.log(Number.parseInt(b));
// console.log(Number.parseInt(c));

//parseFloat()
// let a = '1.1'
// let b = 2
// let c = 'c'
// console.log(Number.parseFloat(a));
// console.log(Number.parseFloat(b));
// console.log(Number.parseFloat(c));


// console.log(Math.PI)
// console.log(Math.abs(-1)) //绝对值
// console.log(Math.log2(16)) //对数运算
// console.log(Math.sqrt(4)) //开方
// console.log(Math.pow(2, 3)) //幂运算
// console.log(Math.random()) // (0, 1)



// console.log(1/2)    // 0.5自然除
// console.log(1/0)    //返回无穷大
// console.log(5 % 3)  //取余
// console.log(2 ** 3) //幂运算

//向上取整
console.log(parseInt(0.1), parseInt(0.5), parseInt(0.6), parseInt(1.2), 
parseInt(1.5), parseInt(1.7))

console.log(parseInt(-0.1), parseInt(-0.5), parseInt(-0.6), parseInt(-1.2), 
parseInt(-1.5), parseInt(-1.7))

//向下取整 返回小于等于一个给定数字的
console.log(Math.floor(0.1), Math.floor(0.5), Math.floor(0.6), 
Math.floor(1.2), Math.floor(1.5), Math.floor(1.7))
//向下取整
console.log(Math.floor(-0.1), Math.floor(-0.5), Math.floor(-0.6), 
Math.floor(-1.2), Math.floor(-1.5), Math.floor(-1.7))


//向上取整
console.log(Math.ceil(0.1), Math.ceil(0.5), Math.ceil(0.6), Math.ceil(1.2), 
Math.ceil(1.5), Math.ceil(1.7))
console.log(Math.ceil(-0.1), Math.ceil(-0.5), Math.ceil(-0.6), 
Math.ceil(-1.2), Math.ceil(-1.5), Math.ceil(-1.7))

/**
 * 将一个数字四舍五入为最接近的整数。
 * 如果 x 是正数,并且小数部分大于等于 0.5,则返回大于 x 的最小整数。
 * 如果 x 是正数,并且小数部分小于 0.5,则返回小于 x 的最大整数。
 * 如果 x 是负数,并且小数部分大于等于 -0.5,则返回小于 x 的最大整数。
 * 如果 x 是负数,并且小数部分小于 -0.5,则返回大于 x 的最小整数。
 */
console.log(Math.round(0.1), Math.round(0.5), Math.round(0.6), 
Math.round(1.2), Math.round(1.5), Math.round(1.7))
console.log(Math.round(-0.1), Math.round(-0.5), Math.round(-0.6), 
Math.round(-1.2), Math.round(-1.5), Math.round(-1.7))

++ 和 --

单目运算符,代表变量自增、自减

i++先用i,用完之后i再子增加1

++i i先自增,再使用i

比较运算符

>、<、>=、<= 和python没有什么区别
!=、== 
!==、===
== 宽松相等,进行类型转换
=== 严格相等,不进行类型转换
console.log(100 > 200) // false
console.log(100 > '200') // 字符、数字? // false
console.log(1000 > '200') // 数字? // true
console.log(1000 > '2') // true
console.log('1000' > 2) // true
console.log('1000' > '2') // false
console.log(1000 > '2a') // false
console.log(3000 > '2a') // false
// 宽松比较
console.log(300 == '300') // true
console.log('200' == '200') // true
// 严格比较 ===
console.log(300 === '300') // false
console.log('200' === '200') // true

逻辑运算符

&& 、 || 、!与、或、非

这些运算符和其他高级语言都一样,支持短路

三元运算符

条件表达式?真值:假值
等价于简单的if...else结构
if (条件表达式) {
 真值
} else {
 假值
}
console.log((3 > 30)?'真':'假');

逗号操作符

js运行多个表达式写在一起

let a = 4+5, b = true, c=a > 20 ?'t':'f'
console.log(a)
console.log(c)


//逗号表达式是有值的,值取决于最后一个表达式的值
function test() {    
    return 3, a + b, c = a++
}
console.log(test()) // 结果是什么 9
console.log(c) // 结果是什么9

其他

名称说明
instanceof判断是否属于指定类型
typeof返回类型字符串
deletedelete操作符, 删除一个对象(an object)或一个对象的属性(an object’s property)或者一个数组中某一个键值(an element at a specified index in an array)。
in如果指定的属性在对象内,返回true
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值