显式地调用 String(value)
来达到这一目的
let value = true;
alert(typeof value); // boolean
value = String(value); // 现在,值是一个字符串形式的 "true"
alert(typeof value); // string
在算术函数和表达式中,会自动进行 number 类型转换。
比如,当使用 /
用于非 number 类型:
alert( "6" / "2" ); // 3, string 类型的值被转换成 number
也可以使用 Number(value)
显式地将这个值转换为 number 类型。
let str = "123";
alert(typeof str); // string
let num = Number(str); // 变成 number 类型 123
alert(typeof num); // number
当从 string 类型源读取值时,比如一个文本表单,但是我们期待数字输入,就经常进行显式转换。
如果字符串不是一个有效的数字,转换的结果会是 NaN
,例如:
let age = Number("an arbitrary string instead of a number");
alert(age); // NaN,转换失败
number 类型转换规则:
alert( Number(" 123 ") ); // 123
alert( Number("123z") ); // NaN (error reading a number at "z")
alert( Number(true) ); // 1
alert( Number(false) ); // 0
显式调用 Boolean(value)
会触发 boolean 类型转换。
转换规则如下:
0
、空的字符串、null
、undefined
和 NaN
变成 false
。true
。alert( Boolean(1) ); // true
alert( Boolean(0) ); // false
alert( Boolean("hello") ); // true
alert( Boolean("") ); // false
alert
显示信息。
prompt
显示信息要求用户输入文本。点击确定返回文本,点击取消或按下 Esc 键返回 null
。
confirm
显示信息等待用户点击确定或取消。点击确定返回 true
,点击取消或 Esc 键返回 false
。
使用函数声明创建函数。
function showMessage() {
alert( 'Hello everyone!' );
}
function
关键字首先出现,然后是函数名,然后是括号(在上述示例中为空)之间的参数列表,最后是花括号之间的代码(即“函数体”)。
在函数中声明的变量只在该函数内部可见。
function showMessage() {
let message = "Hello, I'm JavaScript!"; // 局部变量
alert( message );
}
showMessage(); // Hello, I'm JavaScript!
alert( message ); // <-- 错误!变量是函数的局部变量
函数也可以访问外部变量
let userName = 'John';
function showMessage() {
let message = 'Hello, ' + userName;
alert(message);
}
showMessage(); // Hello, John
一种普遍的做法是用动词前缀来开始一个函数,这个前缀模糊地描述了这个动作。
"get…"
—— 返回值,"calc…"
—— 计算"create…"
—— 创建,"check…"
—— 检查并返回 boolean 值
showMessage(..) // 显示信息
getAge(..) // 返回 age (gets it somehow)
calcSum(..) // 计算求和并返回结果
createForm(..) // 创建表格 (通常会返回它)
checkPermission(..) // 检查权限并返回 true/false
undefined
。我们写一个包含三个参数的函数 ask(question, yes, no)
:
question
question 文本
yes
当回答 “Yes” 时候运行的脚本
no
当回答 “No” 时候运行的脚本
函数需要提出 question
(问题),依赖用户的回答, 调用 yes()
或 no()
:
function ask(question, yes, no) {
if (confirm(question)) yes()
else no();
}
function showOk() {
alert( "You agreed." );
}
function showCancel() {
alert( "You canceled the execution." );
}
// usage: functions showOk, showCancel are passed as arguments to ask
ask("Do you agree?", showOk, showCancel);
ask
参数调用回调函数或只是回调。
我们的想法是,我们传递一个函数,并希望稍后在必要时回调它。在我们的例子中,showOk
对应回答 “yes” 的回调,showCancel
对应回答“否”。
function ask(question, yes, no) {
if (confirm(question)) yes()
else no();
}
ask(
"Do you agree?",
function() { alert("You agreed."); },
function() { alert("You canceled the execution."); }
);
函数声明: 函数在主代码流中单独声明。
// Function Declaration
function sum(a, b) {
return a + b;
}
函数表达式: 一个函数,在一个表达式中或另一个语法结构中创建。这里,该函数由赋值表达式 =
右侧创建:
// Function Expression
let sum = function(a, b) {
return a + b;
};
函数表达式在执行到达时创建并可用。一旦执行到右侧分配 let sum = function…
,就会创建并可以使用(复制,调用等)。函数声明可用于整个脚本/代码块。当一个函数声明在一个代码块内运行时,它在该块内的任何地方都是可见的。