js:语言精髓笔记2--表达式
2024-10-15 02:30:11
表达式:由运算符和运算元构成;JS中没有运算符的表达式称为单值表达式;没有运算元,孤立与代码上下文的运算符是不符合语法的;(表达式是有返回值的)
单值表达式:
- this引用;
- 变量引用;
- 直接量:
- null
- undefined
- 字符串
- 布尔值
- 数值
- 正则表达式
基本表达式:
- 单值表达式
- 数组初始器:[]
- 对象初始器:{}
- 表达式分组运算:()
运算符按结果值的分类:
- 一般表达式运算:(会强制类型转换)
- 数值运算 //运算元:number ; 目标类型: number;
- 位运算 //运算元:number ; 目标类型: number;
- 布尔值运算(! && ||) //运算元:boolean; 目标类型: boolean;
- 值逻辑运算:(将运算元理解为布尔值,但不强制类型转换)(&& ||) //运算元: 运算元 ; 目标类型: 运算元;
- 字符串运算
- 字符串连接:效果与concat()相同; //运算元:string; 目标类型: string;
- 等值运算:(三种值类型中对字符串检测开销很大) //运算元:*; 目标类型: boolean;
- 一般赋值; //运算元:*; 目标类型: *;
- 复合赋值;(除了 += 之外都不可对字符串运算) //运算元:*; 目标类型: *;
- 一般function函数调用;
- Function类创建的函数对象调用;
- 对象:创建,存取,检查等; //运算元:object; 目标类型: *;
- 其他
赋值运算:
函数调用:使用小括号,传参并执行; //运算元:function; 目标类型: *;
序列检测(等值运算中):
- 可比较序列的类型:boolean,string,number(任何值与nan比较返回false的原因正是因为其没有序列值)
- 检测规则:(按数值比较优先原则)
- 两个值类型比较:比较序列中大小;
- 引用类型与值类型比较:引用类型转化为相同类型的值类型数据后比较;
- 两个引用类型比较:无意义,总是返回false;因为找不到序列;
赋值运算:赋值的效果就是修改存储单元中的值;
- 语法上“100 = 10”这样赋值是成立的,但执行的时候会因左侧的的运算元是直接量,其存储单元不可写而导致错误;
- 不能直接修改字符串字符;
- 字符串连接运算会产生新的字符串;
- 修改length无意义;
特例:由于值类型的字符串是一个不确定长度的连续数据块,赋值开销大,所以JS中字符串赋值为字符串的地址引用;所以产生
特殊运算符:
- 不直接产生运算效果而是影响运算效果:
- void 使表达式总是返回undefined;
- ? :
- () 调整运算次序,优先级运算
- , 表达式顺序地连续执行
- 不直接针对变量的值运算而是针对变量运算:
- typeof 并不访问变量的值,而是取值的类型信息;所以对未定义的变量使用也不会报错;
- instanceof 返回继承关系;
- in 返回成员关系;
- delete 删除成员;
最新文章
- 使用Newtonsoft.Json.dll(JSON.NET)动态解析JSON、.net 的json的序列化与反序列化(一)
- C++常用特性原理解析
- Linux(Ubuntu 14.04) setting up OpenGL
- centos6.7 安装Docker
- ci实现RBAC,详细解释原理和核心代码显示
- SQL.变量、运算符、if、while
- “我爱淘”冲刺阶段Scrum站立会议2
- 更改cmd代码页,修正语言显示
- DbProviderFactories.GetFactory Oracle.ManagedDataAccess.Client
- asp.net mvc CodeFirst模式数据库迁移步骤
- 在ARC下,assign和weak的区别
- 手把手图文教你从Eclipse项目迁移Android Studio
- Java的几种设计模式
- spring Boot异步操作报错误: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.self.spring.springboot.Jeep' available
- mysql加速source导入数据
- 【ASP.Net】publish asp.net to local IIS
- linux文件管理之解压缩
- couchdb
- cplusplus 库 在线管理; 类似于 python的 pip install 、nodejs 的npm模块
- windows live writer backup
热门文章
- jQuery.isEmptyObject() 函数详解
- Truck History(prim &; mst)
- (11)UI布局和分辨率适配
- undefined与null的区别
- ios 百度地图api 入门
- Python strip、lstrip和rstrip的用法
- 【云计算】Docker删除名称为none的Image镜像
- 《ASP.NET MVC4 WEB编程》学习笔记------Web API
- js ==与===区别(两个等号与三个等号)
- iOS 推荐一个下载用的第三方库