目录

JS有哪些语法

JS有这些语法:一、变量声明;二、数据类型;三、运算符;四、函数;五、强制转换;六、条件语句;七、循环语句。变量声明是指JS中使用var、let和const关键字声明变量。

一、变量声明

JS中使用var、let和const关键字声明变量。代码如下:

var name = "JavaScript";
let age = 20;
const PI = 3.14;

二、数据类型

JS有以下几种基本数据类型:

  • 基本数据类型:字符串类型(string)、数值类型(number)、布尔类型(boolean)、undefined、null。
  • 引用数据类型:对象(object)、函数(function)、数组(array)。
  • 字符串类型:必须要由成对的单引号或双引号包起来。内容可以是任意文本,只要不包含包围字符串的引号就可以。如果一定要包含,则用反斜杠转义。
  • 数值类型:可以带小数点,也可以不带小数点。
  • 布尔类型:只有两个值:true,false。
  • undefined:表示声明的变量没有值。
  • null:用来表示尚未存在的对象。

代码如下:

let name = "JavaScript";
let age = 20;
let isStudent = true;
let obj = {
  prop1: "value1",
  prop2: "value2"
};
let empty = null;
let notDefined;

三、运算符

JS支持传统的算术运算符,例如加减乘除和取余数。还有比较运算符(==、!=、>、<、>=和<=),逻辑运算符(&&、||、!)等。

算术运算符:+、-、*、/、%(取余)、++(递增)、–(递减)。代码如下:

alert( 10 / 4 );   //2.5
alert( 10 % 4 );   //2
// 取余的结果正负取决于 % 前面的值(面试会问)
var  i = 3;
i++;
alert( 'i =' + i );  // i=4
var m = 3,n;
n = m++;
alert('m='+m+',n='+n);    // m= 4,n=3
var m = 3, n;
n = ++m;
alert('m='+m+',n='+n);    // m= 4,n=4
var x = 4,y = 5;
var z = x++ + y++;
alert('x='+ x );    // 5
alert('y='+ y );   // 6
alert('z='+ z );   // 9
var a = 3;                                                      
var b = a++ + ++a + a++;
alert('a='+a +',b='+b );  // a=6,b=13
// ++在后面,先取变量的值,把取到的值赋给左边的变量,然后变量自己再增1
// ++在前面,变量先加1,然后再赋值

赋值运算符:=、+=、-=、*=、/=、%=。代码如下:

var  a += 5;    // a = a+5
var  a *= 5;   // a = a * 5

+运算符:可用于把字符串变量连接起来(求和,拼接)。代码如下:

var a = 6;
var s= 'hello';
var b = true;
alert( a + s + b );  // 6 hello true
alert( s + a + a);   // hello66
alert( a + a + s );  // 12hello

逻辑运算符:&&、||、!。代码如下:

var h5 = 56, js = 67;
var r = h5 >= 60 && js <= 60;
alert( r ); // false
 
var r2 = h5 >= 60 || js >=60;
alert( r2 ); // true
 
var r3 = !(h5 > 60);
alert(r3); // true
 
var a = 5, b = 6;
alert( a < 1 && ++b > 5 ); // false
alert(b); // 5  (&&是短路运算符,全真才为真左边的a < 1 已经是false,所以他不去计算右边了,所以b = 6)
 
var a = 1 && 2+2;
alert(a); // 4 (因为左边为真,所以会继续去看右边)
 
var a = 0 && 2 + 2;
alert(a); // 0 (因为0转布尔值为false,左边为假,所以不会去看右边)
 
var a = 5,b = 6;
alert( a || ++b); // true
alert( b ); // 6 (左边的为true,不再去计算右边)
 
alert(3 && 6);  //6
alert(0 && 6);  //0
// 如果左右两边都为数值,0相当于false,非0相当于true
 
alert('hello' && 'world');  //world
alert('' && 'word');   //””
// 空字符串相等于false,非空字符串相当于true

四、函数

JS中函数是一种可以重复使用的代码块,用于执行特定的任务。我们可以使用function关键字来定义函数,函数可以有参数和返回值。代码如下:

function add(a, b) {
  return a + b;
}

五、强制转换

强制转换主要指使用Number、String和Boolean三个构造函数,手动将各种类型的值,转换成数字、字符串或者布尔值。

1、Number强制转换

参数为原始类型值的转换规则为原始类型的值主要是字符串、布尔值、undefined和null,它们都能被Number转成数值或NaN。NaN:not a number,当数学计算得不到数字结果时,该值就是NaN。isNaN:判断变量是否为NaN。代码如下:

// 数值:转换后还是原来的值
var num = Number(324);
alert(typeof num + num);  // number 324
// 数值:转换后还是原来的值
var num = Number(324);
alert(typeof num + num);  //number 324
// 字符串:如果可以被解析为数值,则转换为相应的数值
Number('324') // 324
var num =Number('324');
alert(typeof num + num);  //number 324
// 字符串:如果不可以被解析为数值,返回NaN
var num =Number('324abc');
alert(typeof num + num);  //number NaN
// 空字符串转为0
var num =Number('');
alert(typeof num + num);  //number 0
// 布尔值:true 转成1,false 转成0
var num = Number(true);
alert(typeof num + num);  //number 1
var num = Number(false);
alert(typeof num + num);  //number 0
// undefined:转成 NaN
Number(undefined) // NaN
var num =Number(undefined );
alert(typeof num + num);  //number NaN
// null:转成0
 var num =Number(null);
alert(typeof num + num);  //number 0

Number函数将字符串转为数值,要比parseInt函数严格很多。基本上,只要有一个字符无法转成数值,整个字符串就会被转为NaN。

参数为对象的转换规则为Number方法的参数是对象时,将返回NaN。代码如下:

Number({a: 1}) // NaN
Number([1, 2, 3]) // NaN
 
var obj = Number ({});
alert(typeof obj + obj); // number NaN
var num = Number([]);
alert(typeof num + num); //number 0

实际上,Number背后的真正规则复杂得多,内部处理步骤如下:

  • 调用对象自身的valueOf方法。如果返回原始类型的值,则直接对该值使用Number函数,不再进行后续步骤。
  • 如果valueOf方法返回的还是对象,则改为调用对象自身的toString方法。如果返回原始类型的值,则对该值使用Number函数,不再进行后续步骤。
  • 如果toString方法返回的是对象,就报错。

2、String强制转换

参数为原始类型值的转换规则为数值转为相应的字符串;字符串转换后还是原来的值;布尔值true转为“true”,false转为“false”;undefined转为“undefined”;null转为“null”。代码如下:

var str = String(123.234);
alert(typeof(str)+ str); // string 123.234

var str = String('he');
alert(typeof(str)+ str); // string he

var str = String(true);
alert(typeof(str)+ str); // string true
var str = String(false);
alert(typeof(str)+ str); // string false

var str = String(undefined);
alert(typeof(str)+ str); // string undefined

var str = String(unll);
alert(typeof(str)+ str); // string null

参数为对象的转换规则为String方法的参数如果是对象,返回一个类型字符串;如果是数组,返回该数组的字符串形式。代码如下:

var str = String({});
alert(typeof(str)+ str); // string [object Object]
var str = String([1,3]);
alert(typeof (str)+ str); // string 1,3

String内部处理步骤如下:

  • 先调用对象自身的toString方法。如果返回原始类型的值,则对该值使用String函数,不再进行以下步骤。
  • 如果toString方法返回的是对象,再调用valueOf方法。如果返回原始类型的值,则对该值使用String函数,不再进行以下步骤。
  • 如果valueOf方法返回的是对象,就报错。

3、Boolean强制转换

参数为原始类型值的转换规则为除了undefined、null、-0、0或+0、NaN、’ ‘(空字符串)这六个值的转换结果为false,其他的值全部为true。代码如下:

var num = Boolean('');
alert(typeof(num) + unm); // boolean false

参数为对象的转换规则为所有对象(包括空对象)的转换结果都是true。代码如下:

var num = Boolean([]);
alert(typeof(num) + unm); // boolean true

六、条件语句

JS中使用if语句来执行条件语句,可以根据条件的真假执行不同的代码块。代码如下:

let age = 20;
if (age >= 18) {
  console.log("成年人");
} else {
  console.log("未成年人");
}

七、循环语句

JS中使用for和while循环语句来重复执行代码块。代码如下:

for (let i = 0; i < 10; i++) {
  console.log(i);
}
let i = 0;
while(i < 10) {
  console.log(i);
  i++;
}

延伸阅读1:JS简介

JavaScript(简称“JS”)是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式、声明式、函数式编程范式。